2020 第一次正睿提高十连测,题目很妙。
Problems
A
将
n
个石子分成
x
堆,使每一堆的石子个数都形如 $ 3k^2 - 3k + 1$
(k≤1)。最小化
x
输出
x。
n≤1011
B
给出一个字符串
S
,求出字符串中,有多少连续的子串形如
AArA
。
其中
Ar
表示
A
的反串。合法的相同字串出现多次,统计多次。
∣S∣≤2×106
C
给出一个
n
个点的树(保证这棵树随机生成),点有点权, 规定
1
号点为根节点。
随机生成一个
n
排列,按这个排列的顺序依次访问所有树上的节点。每次访问到一个结点
x
时,需要将包括
x
在内的所有
x
子树中的点的点权
V
加上
x
点的当前权值
Vx′。
求出最终所有点权和的期望值。
n≤105
Problem A Stone
Statement
将
n
个石子分成
x
堆,使每一堆的石子个数都形如 $ 3k^2 - 3k + 1$
(k≤1)。最小化
x
输出
x。
n≤1011
Analysis
引理 1
对于任意一个正整数
x,
均可以被拆分为
3
个形如
(2n)
的数字。
引理 2
可以证明
x
一定小于等于
8。
证明 引理 2
我们需要的数字是
3k2−3k+1=6×2n(n+1)+1=6×(2n)+1.
考虑一定存在
N−k
是
6
的倍数。 所以
N−k+3
必然可以写成 三个形如
3k2−3k+1
数的和的形式.
而
N−k+3
最多和
N
相差
5
所以最多补
5
个
1
就可以凑出
N.
引理 3
ans≡N  (mod  6)
证明 引理 3
因为
∑3k2−3k+1=∑6×2n(n+1)+1=∑6×(2n)+1.
显然
∑6×(2n)+1≡1  (mod  6).
易知
ans≡N  (mod  6)
只需要判断答案是
1
还是
7,
是
2
还是
8。
- 判断是否为
1
直接判断即可。 - 判断是否为
2
双指针扫一遍即可。
Problem B Palindrome
Statement
给出一个字符串,求出字符串中,有多少连续的子串形如
AArA
。
其中
Ar
表示
A
的反串。合法的相同字串出现多次,统计多次。
∣S∣≤2×106
Analysis
先用各种神奇的算法(字符串 Hash
、manacher)求出 len[i] 表示第
i
个字符和第
i+1
个字符之间为中心,向两边扩展最长的回文串.
枚举
AArA
的
31
位置
i
,在
[i+1,i+len[i]]
这个区间中有多少
x
满足
x−len[x]≤i,
每一个合法的
x
给答案贡献
1.
转化为 问题.
可以采用 或者 后采用 扫描.
Problem C Random
给出一个
n
个点的树(保证这棵树随机生成),点有点权, 规定
1
号点为根节点。
随机生成一个
n
排列,按这个排列的顺序依次访问所有树上的节点。每次访问到一个结点
x
时,需要将包括
x
在内的所有
x
子树中的点,点权加
Vx。
n≤105
关于期望思考
期望的
:标志着很多情况下的期望可以分开算,算完后再合并。例如:点权和的期望
=
点权的期望和。
直观感受一下:期望是一个随机变量的平均情况下的数值。
我们不知道这个随机变量x确切的数值,自然也不知道由这个随机变量推导出来的另一个随机变量X(例如:如果我们不知道
每个点 操作后的
确切点权,那么所有点的点权和的确切数值也无从得知。)
但是如果我们知道每个点在
下取到的值x,我们一样可以通过随机变量x
下取到的值推出X在
下取到的值。
关于本题,我们同样可以拆开来看,要求
求出结点的期望和,那我们可以求出每个点的期望权值,然后再相加就能得到所有结点的期望和。
对于一个有根树上的每一个结点,可能能对这个结点的权值产生贡献的
它的祖先。
这个点
a
最终权值的期望
Va′
就是点
a
的初始权值和所有
a
的祖先对点
a
的期望贡献之和。
a
的祖先
p
对
a
的期望贡献可以拆成
Vp′
与 对
a
的贡献次数的乘积。
对于每一条树链上的任意一个点
x
来说某一个祖先
p
对其贡献的次数,只与这个祖先p和这个点x的距离有关。
不妨定义
dp[i]
为结点
1
到往下的第
i
个点的期望贡献次数( :第
1
个点对第
1
个点的贡献次数定义为
dp[1]
)。
对于每一条树链,我们都可以采用同一套
dp
值进行处理,因为对于每个点来说,其祖先的对其贡献次数只与他们之间的相对位置有关。
考虑如何预处理出
dp[i]:
考虑结点
1
如何对其往下第
i−1
结点
x
产生贡献。(不妨设:这一条树链上结点的编号由 依次为
1−k
)。
考虑贡献的传递过程,结点
1
的贡献传给
x
有两种情况:
这些方案对应的贡献为
1
,所以只要求出方案数量,就可以求出结点
1
对
x
的贡献次数。
考虑这些方案对应着什么——
n
的排列中 以
1
开始的上升序列的个数。
于是,dp[i]
就等于在
n
的排列中 以
1
开始的上升序列的个数。
枚举一个上升序列的长度
d
,统计其数量即可
dp[i]=d=1∑i(d−1i−1)×(di)×(i−d)!
其中: -
(d−1i−1)
指在
i−1
中选定
d−1
个数字 。
最后需要注意一点,因为树是随机生成的,其实这就保证了树的高度(树链的最长长度)在O(n)级别,预处理和统计答案相当于是线性的。
Codes
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
const int _ = 1e7 + 100;
#define LL long long 
LL read(){ LL x; scanf("%lld", &x); return x; }
LL A[_], Q;
void init(){
    for(int i = 1; ; i++) { A[i] = ( (i) *1ll* (i - 1) ) >> 1; if(A[i] > 1e11) break; else Q = i; }
}
int doit(LL x){
    if(x % 6 != 1 && x % 6 != 2) return x % 6 == 0 ? 6 : x % 6;
    if(x % 6 == 1){
        x = (x - 1) / 6;
        if( ( *lower_bound(A + 1, A + Q + 1, x) ) == ( x ) ) return 1;
        else return 7;
    } else {
        x = (x - 2) / 6;
        int L = 1, R = Q;
        while(L <= R){
            if(A[L] + A[R] == x) return 2;
            while(A[R] + A[L] < x) L++;
            while(A[R] + A[L] > x) R--;
        }
        return 8;
    }
}
int main(){
    int T = read();
    init();
    while(T--) printf("%d\n", doit(read()));
    return 0;
}
 
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <ctime>
#include <algorithm>
using namespace std;
const int _ = 2e7 + 100;
#define LL long long 
int read(){ int x; scanf("%d", &x); return x; }
char S[_];
int  n;
namespace Hash{
    const int MOD  = 998244353;
    const int base = 'z' + 10;
    int ahs[_];
    int bhs[_];
    int POW[_];
    int pow(int a, int b, int p){ int ans = 1; while(b) { if(b & 1) ans = (ans *1LL* a) % p; a = (a *1ll* a) % p; b >>= 1; } return ans; }
    int suba(int L, int R) { return (  ahs[R] - (ahs[L - 1] *1ll* POW[R - L + 1] % MOD)  +0ll+ MOD) % MOD; }
    int subb(int L, int R) { return (  bhs[L] - (bhs[R + 1] *1ll* POW[R - L + 1] % MOD)  +0ll+ MOD) % MOD; }
    void initHash(int x){
        POW[0] = 1;
        for(int i = 1; i <= x; i++) POW[i] = POW[i - 1] *1ll* base % MOD;
        for(int i = 1; i <= x; i++){
            ahs[i] = ( (ahs[i - 1] *1ll* base) +0ll+ S[i] ) % MOD;
        }
        for(int i = x; i >= 1; i--){
            bhs[i] = ( (bhs[i + 1] *1ll* base) +0ll+ S[i] ) % MOD;
        }
    }
}
using Hash::initHash;
using Hash::suba;
using Hash::subb;
int mlen[_];
int qury[_];
int main(){
    clock_t t0 = clock();
    freopen("in.txt", "r", stdin);
    scanf("%s", S + 1); n = strlen(S + 1);
    initHash(n);
    for(int i = 1; i < n; i++){
        if(S[i] != S[i + 1]) { mlen[i] = 0; continue; }
        int L = 0;
        int R = i;
        int ans = 0;
        while(L < R){
            int mid = L + ((R - L + 1) >> 1);
            if(suba(i - mid + 1, i) == subb(i + 1, i + mid)) ans = mid, L = mid;
            else R = mid - 1;
        }
        mlen[i] = ans;
    }
    for(int i = 1; i < n; i++) qury[i] = i - mlen[i];
    int ans = 0;
    for(int i = 1; i < n; i++){
        for(int j = i + 1; j <= i + mlen[i];j++) ans += (j - mlen[j] <= i);
    }
    printf("%d", ans);
    return 0;
}
 
#include <cstdio>
#include <cstring>
#include <cmath>
#include <stack>
#include <iostream>
#define MOD 1000000007
using namespace std;
int read(){ int x; scanf("%d", &x); return x; }
const int _ = 1e5 + 100;
const int MAXD = 1e3 + 100;
int head[_];
struct edges{
    int node;
    int nxt;
}edge[_ << 1];
int tot = 0;
void add(int u, int v){
    tot++;
    edge[tot].node = v;
    edge[tot].nxt  = head[u];
    head[u]        = tot;
}
int n;
int rt = 1;
int C[MAXD + 100][MAXD + 100];
int frc[_];
int dp[_];
int pow(int a, int b, int P)  { int ans = 1; while(b) { if(b & 1) ans = (ans *1ll* a) % P; a = (a *1ll* a) % P; b >>= 1; } return ans; }
int inv(int x){ return pow(x, MOD - 2, MOD); }
const int DB = 20;
void init(){
    C[0][0] = 1;
    for(int i = 1; i <= MAXD; i++){
        C[i][0] = 1;
        for(int j = 1; j <= i; j++){
            C[i][j] = ( C[i - 1][j] +0ll+ C[i - 1][j - 1] ) % MOD;
        }
    }
    frc[0] = 1;
    for(int i = 1; i <= _ - 10; i++) frc[i] = ( frc[i - 1] *1ll* (i) ) % MOD;
    for(int i = 1; i <= MAXD; i++){
        dp[i] = 0;
        for(int d = 1; d <= i; d++){
            dp[i] = (dp[i] +0ll+ (
                (  ( (C[i - 1][d - 1] *1ll* C[i][d]) % MOD ) *1ll* frc[i - d]  ) % MOD
                    ) % MOD) % MOD;
        }
    }
    for(int i = 1; i <= MAXD; i++) dp[i] = (dp[i] *1ll* inv(frc[i])) % MOD;
}
int ans = 0;
struct Stack{ int v[_]; int top; Stack(){ top = 0; } inline int *GetHead(){ return &v[0]; } inline int* GetTail(){ return &v[top]; } void push(int x){v[top++] = x;} void pop(){top --;} };
Stack S;
int val[_];
int NodeVal[_];
void dfs0(int o, int fa, int dep){
    S.push(o);
    int now = dep;
    for(int *i = S.GetHead(); i != S.GetTail(); i++){
        val[o] = (  val[o] +0ll+ (dp[now] *1ll* NodeVal[*i]) % MOD  ) % MOD;
        now --;
    }
    for(int i = head[o]; i ; i = edge[i].nxt){
        int ex = edge[i].node;
        if(ex == fa) continue;
        dfs0(ex, o, dep + 1);
    }
    S.pop();
}
int main(){
    n = read();
    init();
    for(int i = 1; i < n; i++){ int u = read(), v = read(); add(u, v); add(v, u); }
    for(int i = 1; i <= n; i++) NodeVal[i] = read();
    dfs0(1, -1, 1);
    int ans = 0;
    for(int i = 1; i <= n; i++) ans = (ans +0ll+ NodeVal[i]) % MOD;
    for(int i = 1; i <= n; i++) ans = (ans +0ll+ val[i]) % MOD;
    printf("%d\n", (ans *1ll* frc[n]) % MOD);
    return 0;
}
 
                                     
                                    
                                    
                                                                            
                                        
                                            
                                            
                                                
                                                    
                                                        
                                                        
                                                            🔗 Source Hash:
                                                            191315f27444e78b11b5afc47204f6d1fe79feff79992e9ab61495dbe0edbb09
                                                        
                                                     
                                                
                                             
                                        
                    
                    
                                            
                                                Build Logs
                                                Build Log - Filtered
================================================
📋 Information:
• Path information has been filtered for privacy protection
• File names are preserved for debugging purposes  
• All build status and error messages are kept intact
🔍 Filter Rules:
• /absolute/path/file.ext → .../file.ext
• /home/username → .../[user]
• /tmp/files → .../[temp]
• /usr/share/packages → .../[system]
================================================
html log:
CMD: ['pandoc', '-s', 'cache/oi-blog_「比赛总结」「ZROI-2020-十连测」Day1.md', '--filter', 'pandoc-crossref', '--filter', 'pandoc-katex', '--template=cache/pandoc_html_template.html', '-o', 'cache.../oi-blog_「比赛总结」「ZROI-2020-十连测」Day1.md.html', '--metadata', '--verbose', '--highlight-style=tango']
STDOUT: 
STDERR: WARNING: pandoc-crossref was compiled with pandoc 3.6.2 but is being run through 3.6.4. This is not supported. Strange things may (and likely will) happen silently.
====================================================================================================
pdf log:
CMD: ['pandoc', '-s', 'cache.../a6e59bc13a.pdf.md', '-o', 'cache/a6e59bc13a.pdf', '-H', 'static/pandoc.header.tex', '--pdf-engine=xelatex', '--verbose']
STDOUT: 
STDERR: [INFO] Loaded static.../pandoc.header.tex from static.../pandoc.header.tex
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] Not rendering RawBlock (Format "html") ""
[INFO] [makePDF] Temp dir:
  .../[temp]
[INFO] [makePDF] Command line:
  xelatex "-halt-on-error" "-interaction" "nonstopmode" "-output-directory" ".../[temp] ".../[temp]
[INFO] [makePDF] Relevant environment variables:
  ("TEXINPUTS",".../[temp]
  ("TEXMFOUTPUT",".../[temp]
  ("SHELL","/bin/bash")
  ("PWD",".../[user]/projects/blog")
  ("HOME",".../[user]
  ("LANG","zh_CN.UTF-8")
  ("PATH",".../[user]/.local/bin:.../[user]/.cargo/bin:.../[user]/miniconda3/envs/myblog/bin:.../[user]/miniconda3/condabin:.../[temp]
[INFO] [makePDF] Source:
  % Options for packages loaded elsewhere
  \PassOptionsToPackage{unicode}{hyperref}
  \PassOptionsToPackage{hyphens}{url}
  \PassOptionsToPackage{space}{xeCJK}
  \documentclass[
  ]{article}
  \usepackage{xcolor}
  \usepackage[a4paper,margin=2cm]{geometry}
  \usepackage{amsmath,amssymb}
  \setcounter{secnumdepth}{-\maxdimen} % remove section numbering
  \usepackage{iftex}
  \ifPDFTeX
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage{textcomp} % provide euro and other symbols
  \else % if luatex or xetex
    \usepackage{unicode-math} % this also loads fontspec
    \defaultfontfeatures{Scale=MatchLowercase}
    \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
  \fi
  \usepackage{lmodern}
  \ifPDFTeX\else
    % xetex/luatex font selection
    \setmainfont[]{Latin Modern Roman}
    \ifXeTeX
      \usepackage{xeCJK}
      \setCJKmainfont[]{AR PL UKai CN}
    \fi
    \ifLuaTeX
      \usepackage[]{luatexja-fontspec}
      \setmainjfont[]{AR PL UKai CN}
    \fi
  \fi
  % Use upquote if available, for straight quotes in verbatim environments
  \IfFileExists{upquote.sty}{\usepackage{upquote}}{}
  \IfFileExists{microtype.sty}{% use microtype if available
    \usepackage[]{microtype}
    \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
  }{}
  \usepackage{setspace}
  \makeatletter
  \@ifundefined{KOMAClassName}{% if non-KOMA class
    \IfFileExists{parskip.sty}{%
      \usepackage{parskip}
    }{% else
      \setlength{\parindent}{0pt}
      \setlength{\parskip}{6pt plus 2pt minus 1pt}}
  }{% if KOMA class
    \KOMAoptions{parskip=half}}
  \makeatother
  \usepackage{color}
  \usepackage{fancyvrb}
  \newcommand{\VerbBar}{|}
  \newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
  \DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
  % Add ',fontsize=\small' for more characters per line
  \newenvironment{Shaded}{}{}
  \newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
  \newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
  \newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
  \newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
  \newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
  \newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
  \newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
  \newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
  \newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
  \newcommand{\ExtensionTok}[1]{#1}
  \newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
  \newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
  \newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
  \newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
  \newcommand{\NormalTok}[1]{#1}
  \newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
  \newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
  \newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
  \newcommand{\RegionMarkerTok}[1]{#1}
  \newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
  \newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
  \newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
  \newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
  \setlength{\emergencystretch}{3em} % prevent overfull lines
  \providecommand{\tightlist}{%
    \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
  % \usepackage{xeCJK}
  % \setCJKmainfont{AR PL UKai CN}
  % \usepackage{unicode-math}
  
  \setmathfont{Latin Modern Math}
  \usepackage{bookmark}
  \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
  \urlstyle{same}
  \hypersetup{
    pdftitle={「比赛总结」正睿 提高十连 Day1},
    pdfauthor={Jiayi Su (ShuYuMo)},
    hidelinks,
    pdfcreator={LaTeX via pandoc}}
  
  \title{「比赛总结」正睿 提高十连 Day1}
  \author{Jiayi Su (ShuYuMo)}
  \date{2020-08-31 08:21:06}
  
  \begin{document}
  \maketitle
  
  \setstretch{1.3}
  2020 第一次正睿提高十连测,题目很妙。
  
  \subsection{Problems}\label{problems}
  
  \paragraph{A}\label{a}
  
  将 \(n\) 个石子分成 \(x\) 堆,使每一堆的石子个数都形如 \$ 3k\^{}2 - 3k +
  1\$ \((k \le 1)\)。最小化 \(x\) 输出 \(x\)。
  
  \(n \le 10^{11}\)
  
  \paragraph{B}\label{b}
  
  给出一个字符串 \(S\) ,求出字符串中,有多少连续的子串形如 \(A A_r A\) 。
  
  其中 \(A_r\) 表示 \(A\) 的反串。合法的相同字串出现多次,统计多次。
  
  \(|S| \le 2 \times 10^6\)
  
  \paragraph{C}\label{c}
  
  给出一个 \(n\) 个点的树(保证这棵树\textbf{随机生成}),点有点权, 规定
  \(1\) 号点为根节点。
  
  \textbf{随机}生成一个 \(n\)
  排列,按这个排列的顺序依次访问所有树上的节点。每次访问到一个结点 \(x\)
  时,需要将包括 \(x\) 在内的所有 \(x\) 子树中的点的点权 \(V\) 加上 \(x\)
  点的当前权值 \(V^{'}_x\)。
  
  求出最终所有点权和的期望值。
  
  \(n \le 10^5\)
  
  \subsection{Problem A Stone}\label{problem-a-stone}
  
  \subsubsection{Statement}\label{statement}
  
  将 \(n\) 个石子分成 \(x\) 堆,使每一堆的石子个数都形如 \$ 3k\^{}2 - 3k +
  1\$ \((k \le 1)\)。最小化 \(x\) 输出 \(x\)。
  
  \(n \le 10^11\)
  
  \subsubsection{Analysis}\label{analysis}
  
  \paragraph{引理 1}\label{ux5f15ux7406-1}
  
  对于任意一个正整数 \(x\), 均可以被拆分为 \(3\) 个形如 \(\dbinom{n}{2}\)
  的数字。
  
  \paragraph{引理 2}\label{ux5f15ux7406-2}
  
  可以证明 \(x\) 一定小于等于 \(8\)。
  
  \paragraph{证明 引理 2}\label{ux8bc1ux660e-ux5f15ux7406-2}
  
  我们需要的数字是
  \(3k^2 - 3k + 1 = 6 \times \dfrac{n (n + 1)}{2} + 1 = 6 \times \dbinom{n}{2} + 1\).
  
  考虑一定存在 \(N - k\) 是 \(6\) 的倍数。 所以 \(N - k + 3\) 必然可以写成
  三个形如 \(3k^2 - 3k + 1\) 数的和的形式.
  
  而 \(N - k + 3\) 最多和 \(N\) 相差 \(5\) 所以最多补 \(5\) 个 \(1\)
  就可以凑出 \(N\).
  
  \paragraph{引理 3}\label{ux5f15ux7406-3}
  
  \(ans \equiv N\ \ (mod\ \ 6)\)
  
  \paragraph{证明 引理 3}\label{ux8bc1ux660e-ux5f15ux7406-3}
  
  因为
  \(\sum 3k^2 - 3k + 1 = \sum 6 \times \dfrac{n (n + 1)}{2} + 1 = \sum 6 \times \dbinom{n}{2} + 1\).
  
  显然 \(\sum 6 \times \dbinom{n}{2} + 1 \equiv 1\ \ (mod\ \ 6)\).
  
  易知 \(ans \equiv N\ \ (mod\ \ 6)\)
  
  只需要判断答案是 \(1\) 还是 \(7\), 是 \(2\) 还是 \(8\)。 - 判断是否为
  \(1\) 直接判断即可。 - 判断是否为 \(2\) 双指针扫一遍即可。
  
  \subsection{Problem B Palindrome}\label{problem-b-palindrome}
  
  \subsubsection{Statement}\label{statement-1}
  
  给出一个字符串,求出字符串中,有多少连续的子串形如 \(A A_r A\) 。
  
  其中 \(A_r\) 表示 \(A\) 的反串。合法的相同字串出现多次,统计多次。
  
  \(|S| \le 2 \times 10^6\)
  
  \subsubsection{Analysis}\label{analysis-1}
  
  先用各种神奇的算法(\texttt{字符串\ Hash} 、\texttt{manacher})求出
  \texttt{len{[}i{]}} 表示第 \(i\) 个字符和第 \(i + 1\)
  个字符之间为中心,向两边扩展最长的回文串.
  
  枚举 \(A A_r A\) 的 \(\frac{1}{3}\) 位置 \(i\) ,在
  \([i + 1, i + \text{len}[i]]\) 这个区间中有多少 \(x\) 满足
  \(x - \text{len}[x] \le i\), 每一个合法的 \(x\) 给答案贡献 \(1\).
  
  转化为 问题.
  
  可以采用 或者 后采用 扫描.
  
  \subsection{Problem C Random}\label{problem-c-random}
  
  给出一个 \(n\) 个点的树(保证这棵树\textbf{随机生成}),点有点权, 规定
  \(1\) 号点为根节点。
  
  \textbf{随机}生成一个 \(n\)
  排列,按这个排列的顺序依次访问所有树上的节点。每次访问到一个结点 \(x\)
  时,需要将包括 \(x\) 在内的所有 \(x\) 子树中的点,点权加 \(V_x\)。
  
  \(n \le 10^5\)
  
  \paragraph{关于期望思考}\label{ux5173ux4e8eux671fux671bux601dux8003}
  
  期望的
  :标志着很多情况下的期望可以分开算,算完后再合并。例如:点权和的期望
  \(=\) 点权的期望和。
  
  直观感受一下:期望是一个随机变量的平均情况下的数值。
  
  我们不知道这个随机变量\(x\)确切的数值,自然也不知道由这个随机变量推导出来的另一个随机变量\(X\)(例如:如果我们不知道
  每个点 操作后的
  \textbf{确切点权},那么所有点的点权和的\textbf{确切数值}也无从得知。)
  
  但是如果我们知道每个点在 下取到的值\(x\),我们一样可以通过随机变量\(x\)
  下取到的值推出\(X\)在 下取到的值。
  
  关于本题,我们同样可以拆开来看,要求
  求出结点的期望和,那我们可以求出每个点的期望权值,然后再相加就能得到所有结点的期望和。
  
  对于一个有根树上的每一个结点,可能能对这个结点的权值产生贡献的
  它的祖先。
  
  这个点 \(a\) 最终权值的期望 \(V^{'}_a\) 就是点 \(a\) 的初始权值和所有
  \(a\) 的祖先对点 \(a\) 的期望贡献之和。
  
  \(a\) 的祖先 \(p\) 对 \(a\) 的期望贡献可以拆成 \(V^{'}_p\) 与 对 \(a\)
  的贡献次数的乘积。
  
  对于每一条树链上的任意一个点 \(x\) 来说某一个祖先 \(p\)
  对其贡献的次数,只与这个祖先\(p\)和这个点\(x\)的距离有关。
  
  不妨定义 \(\text{dp}[i]\) 为结点 \(1\) 到往下的第 \(i\)
  个点的期望贡献次数( :第 \(1\) 个点对第 \(1\) 个点的贡献次数定义为
  \(\text{dp}[1]\) )。
  
  对于每一条树链,我们都可以采用同一套 \(\text{dp}\)
  值进行处理,因为对于每个点来说,其祖先的对其贡献次数只与他们之间的相对位置有关。
  
  考虑如何预处理出 \(\text{dp}[i]\):
  
  考虑结点 \(1\) 如何对其往下第 \(i - 1\) 结点 \(x\)
  产生贡献。(不妨设:这一条树链上结点的编号由 依次为 \(1-k\) )。
  
  考虑贡献的传递过程,结点 \(1\) 的贡献传给 \(x\) 有两种情况:
  
  \begin{itemize}
  \item
    由 \(1\) 直接传递给 \(x\)
  \item
    由 \(1\) 传递给 \(x\) 的中间的若干结点,经过多次传递后传递给 \(x\) 。
  \end{itemize}
  
  这些方案对应的贡献为 \(1\) ,所以只要求出方案数量,就可以求出结点 \(1\)
  对 \(x\) 的贡献次数。
  
  考虑这些方案对应着什么—— \(n\) 的排列中 以 \(1\)
  开始的\textbf{上升序列}的个数。
  
  于是,\(\text{dp}[i]\) 就等于在 \(n\) 的排列中 以 \(1\)
  开始的\textbf{上升序列}的个数。
  
  枚举一个上升序列的长度 \(d\) ,统计其数量即可
  
  \[ \text{dp}[i] = \sum_{d = 1}^{i} \dbinom{i - 1}{d - 1} \times \dbinom{i}{d} \times (i - d)! \]
  
  其中: - \(\dbinom{i - 1}{d - 1}\) 指在 \(i - 1\) 中选定 \(d - 1\)
  个数字 。
  
  \begin{itemize}
  \item
    \(\dbinom{i}{d}\) 指在 \(i\) 个位置中选 \(d\) 个将这 \(d\)
    个数字放下。
  \item
    \((i - d)!\) 指 剩下的\((i - d)\)个位置的数字任意排列。
  \end{itemize}
  
  最后需要注意一点,因为树是随机生成的,其实这就保证了树的高度(树链的最长长度)在\(O(\sqrt n)\)级别,预处理和统计答案相当于是线性的。
  
  \subsection{Codes}\label{codes}
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstdio\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstring\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}iostream\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cmath\textgreater{}}
  \KeywordTok{using} \KeywordTok{namespace}\NormalTok{ std}\OperatorTok{;}
  \AttributeTok{const} \DataTypeTok{int}\NormalTok{ \_ }\OperatorTok{=} \FloatTok{1e7} \OperatorTok{+} \DecValTok{100}\OperatorTok{;}
  \PreprocessorTok{\#define LL }\DataTypeTok{long}\PreprocessorTok{ }\DataTypeTok{long}\PreprocessorTok{ }
  \NormalTok{LL read}\OperatorTok{()\{}\NormalTok{ LL x}\OperatorTok{;}\NormalTok{ scanf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%lld}\StringTok{"}\OperatorTok{,} \OperatorTok{\&}\NormalTok{x}\OperatorTok{);} \ControlFlowTok{return}\NormalTok{ x}\OperatorTok{;} \OperatorTok{\}}
  \NormalTok{LL A}\OperatorTok{[}\NormalTok{\_}\OperatorTok{],}\NormalTok{ Q}\OperatorTok{;}
  \DataTypeTok{void}\NormalTok{ init}\OperatorTok{()\{}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;} \OperatorTok{;}\NormalTok{ i}\OperatorTok{++)} \OperatorTok{\{}\NormalTok{ A}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(} \OperatorTok{(}\NormalTok{i}\OperatorTok{)} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*} \OperatorTok{(}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{)} \OperatorTok{)} \OperatorTok{\textgreater{}\textgreater{}} \DecValTok{1}\OperatorTok{;} \ControlFlowTok{if}\OperatorTok{(}\NormalTok{A}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{\textgreater{}} \FloatTok{1e11}\OperatorTok{)} \ControlFlowTok{break}\OperatorTok{;} \ControlFlowTok{else}\NormalTok{ Q }\OperatorTok{=}\NormalTok{ i}\OperatorTok{;} \OperatorTok{\}}
  \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ doit}\OperatorTok{(}\NormalTok{LL x}\OperatorTok{)\{}
      \ControlFlowTok{if}\OperatorTok{(}\NormalTok{x }\OperatorTok{\%} \DecValTok{6} \OperatorTok{!=} \DecValTok{1} \OperatorTok{\&\&}\NormalTok{ x }\OperatorTok{\%} \DecValTok{6} \OperatorTok{!=} \DecValTok{2}\OperatorTok{)} \ControlFlowTok{return}\NormalTok{ x }\OperatorTok{\%} \DecValTok{6} \OperatorTok{==} \DecValTok{0} \OperatorTok{?} \DecValTok{6} \OperatorTok{:}\NormalTok{ x }\OperatorTok{\%} \DecValTok{6}\OperatorTok{;}
      \ControlFlowTok{if}\OperatorTok{(}\NormalTok{x }\OperatorTok{\%} \DecValTok{6} \OperatorTok{==} \DecValTok{1}\OperatorTok{)\{}
  \NormalTok{        x }\OperatorTok{=} \OperatorTok{(}\NormalTok{x }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{)} \OperatorTok{/} \DecValTok{6}\OperatorTok{;}
          \ControlFlowTok{if}\OperatorTok{(} \OperatorTok{(} \OperatorTok{*}\NormalTok{lower\_bound}\OperatorTok{(}\NormalTok{A }\OperatorTok{+} \DecValTok{1}\OperatorTok{,}\NormalTok{ A }\OperatorTok{+}\NormalTok{ Q }\OperatorTok{+} \DecValTok{1}\OperatorTok{,}\NormalTok{ x}\OperatorTok{)} \OperatorTok{)} \OperatorTok{==} \OperatorTok{(}\NormalTok{ x }\OperatorTok{)} \OperatorTok{)} \ControlFlowTok{return} \DecValTok{1}\OperatorTok{;}
          \ControlFlowTok{else} \ControlFlowTok{return} \DecValTok{7}\OperatorTok{;}
      \OperatorTok{\}} \ControlFlowTok{else} \OperatorTok{\{}
  \NormalTok{        x }\OperatorTok{=} \OperatorTok{(}\NormalTok{x }\OperatorTok{{-}} \DecValTok{2}\OperatorTok{)} \OperatorTok{/} \DecValTok{6}\OperatorTok{;}
          \DataTypeTok{int}\NormalTok{ L }\OperatorTok{=} \DecValTok{1}\OperatorTok{,}\NormalTok{ R }\OperatorTok{=}\NormalTok{ Q}\OperatorTok{;}
          \ControlFlowTok{while}\OperatorTok{(}\NormalTok{L }\OperatorTok{\textless{}=}\NormalTok{ R}\OperatorTok{)\{}
              \ControlFlowTok{if}\OperatorTok{(}\NormalTok{A}\OperatorTok{[}\NormalTok{L}\OperatorTok{]} \OperatorTok{+}\NormalTok{ A}\OperatorTok{[}\NormalTok{R}\OperatorTok{]} \OperatorTok{==}\NormalTok{ x}\OperatorTok{)} \ControlFlowTok{return} \DecValTok{2}\OperatorTok{;}
              \ControlFlowTok{while}\OperatorTok{(}\NormalTok{A}\OperatorTok{[}\NormalTok{R}\OperatorTok{]} \OperatorTok{+}\NormalTok{ A}\OperatorTok{[}\NormalTok{L}\OperatorTok{]} \OperatorTok{\textless{}}\NormalTok{ x}\OperatorTok{)}\NormalTok{ L}\OperatorTok{++;}
              \ControlFlowTok{while}\OperatorTok{(}\NormalTok{A}\OperatorTok{[}\NormalTok{R}\OperatorTok{]} \OperatorTok{+}\NormalTok{ A}\OperatorTok{[}\NormalTok{L}\OperatorTok{]} \OperatorTok{\textgreater{}}\NormalTok{ x}\OperatorTok{)}\NormalTok{ R}\OperatorTok{{-}{-};}
          \OperatorTok{\}}
          \ControlFlowTok{return} \DecValTok{8}\OperatorTok{;}
      \OperatorTok{\}}
  \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ main}\OperatorTok{()\{}
      \DataTypeTok{int}\NormalTok{ T }\OperatorTok{=}\NormalTok{ read}\OperatorTok{();}
  \NormalTok{    init}\OperatorTok{();}
      \ControlFlowTok{while}\OperatorTok{(}\NormalTok{T}\OperatorTok{{-}{-})}\NormalTok{ printf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%d\textbackslash{}n}\StringTok{"}\OperatorTok{,}\NormalTok{ doit}\OperatorTok{(}\NormalTok{read}\OperatorTok{()));}
      \ControlFlowTok{return} \DecValTok{0}\OperatorTok{;}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstdio\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstring\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}iostream\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cmath\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}ctime\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}algorithm\textgreater{}}
  \KeywordTok{using} \KeywordTok{namespace}\NormalTok{ std}\OperatorTok{;}
  \AttributeTok{const} \DataTypeTok{int}\NormalTok{ \_ }\OperatorTok{=} \FloatTok{2e7} \OperatorTok{+} \DecValTok{100}\OperatorTok{;}
  \PreprocessorTok{\#define LL }\DataTypeTok{long}\PreprocessorTok{ }\DataTypeTok{long}\PreprocessorTok{ }
  \DataTypeTok{int}\NormalTok{ read}\OperatorTok{()\{} \DataTypeTok{int}\NormalTok{ x}\OperatorTok{;}\NormalTok{ scanf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%d}\StringTok{"}\OperatorTok{,} \OperatorTok{\&}\NormalTok{x}\OperatorTok{);} \ControlFlowTok{return}\NormalTok{ x}\OperatorTok{;} \OperatorTok{\}}
  \DataTypeTok{char}\NormalTok{ S}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{  n}\OperatorTok{;}
  \KeywordTok{namespace}\NormalTok{ Hash}\OperatorTok{\{}
      \AttributeTok{const} \DataTypeTok{int}\NormalTok{ MOD  }\OperatorTok{=} \DecValTok{998244353}\OperatorTok{;}
      \AttributeTok{const} \DataTypeTok{int}\NormalTok{ base }\OperatorTok{=} \CharTok{\textquotesingle{}z\textquotesingle{}} \OperatorTok{+} \DecValTok{10}\OperatorTok{;}
      \DataTypeTok{int}\NormalTok{ ahs}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
      \DataTypeTok{int}\NormalTok{ bhs}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
      \DataTypeTok{int}\NormalTok{ POW}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
      \DataTypeTok{int}\NormalTok{ pow}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ a}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ b}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ p}\OperatorTok{)\{} \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{1}\OperatorTok{;} \ControlFlowTok{while}\OperatorTok{(}\NormalTok{b}\OperatorTok{)} \OperatorTok{\{} \ControlFlowTok{if}\OperatorTok{(}\NormalTok{b }\OperatorTok{\&} \DecValTok{1}\OperatorTok{)}\NormalTok{ ans }\OperatorTok{=} \OperatorTok{(}\NormalTok{ans }\OperatorTok{*}\DecValTok{1}\BuiltInTok{LL}\OperatorTok{*}\NormalTok{ a}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ p}\OperatorTok{;}\NormalTok{ a }\OperatorTok{=} \OperatorTok{(}\NormalTok{a }\OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ a}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ p}\OperatorTok{;}\NormalTok{ b }\OperatorTok{\textgreater{}\textgreater{}=} \DecValTok{1}\OperatorTok{;} \OperatorTok{\}} \ControlFlowTok{return}\NormalTok{ ans}\OperatorTok{;} \OperatorTok{\}}
      \DataTypeTok{int}\NormalTok{ suba}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ L}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ R}\OperatorTok{)} \OperatorTok{\{} \ControlFlowTok{return} \OperatorTok{(}\NormalTok{  ahs}\OperatorTok{[}\NormalTok{R}\OperatorTok{]} \OperatorTok{{-}} \OperatorTok{(}\NormalTok{ahs}\OperatorTok{[}\NormalTok{L }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ POW}\OperatorTok{[}\NormalTok{R }\OperatorTok{{-}}\NormalTok{ L }\OperatorTok{+} \DecValTok{1}\OperatorTok{]} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{)}  \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;} \OperatorTok{\}}
      \DataTypeTok{int}\NormalTok{ subb}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ L}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ R}\OperatorTok{)} \OperatorTok{\{} \ControlFlowTok{return} \OperatorTok{(}\NormalTok{  bhs}\OperatorTok{[}\NormalTok{L}\OperatorTok{]} \OperatorTok{{-}} \OperatorTok{(}\NormalTok{bhs}\OperatorTok{[}\NormalTok{R }\OperatorTok{+} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ POW}\OperatorTok{[}\NormalTok{R }\OperatorTok{{-}}\NormalTok{ L }\OperatorTok{+} \DecValTok{1}\OperatorTok{]} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{)}  \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;} \OperatorTok{\}}
      \DataTypeTok{void}\NormalTok{ initHash}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ x}\OperatorTok{)\{}
  \NormalTok{        POW}\OperatorTok{[}\DecValTok{0}\OperatorTok{]} \OperatorTok{=} \DecValTok{1}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ x}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ POW}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ POW}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ base }\OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ x}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
  \NormalTok{            ahs}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(} \OperatorTok{(}\NormalTok{ahs}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ base}\OperatorTok{)} \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ S}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \OperatorTok{\}}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=}\NormalTok{ x}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textgreater{}=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i}\OperatorTok{{-}{-})\{}
  \NormalTok{            bhs}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(} \OperatorTok{(}\NormalTok{bhs}\OperatorTok{[}\NormalTok{i }\OperatorTok{+} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ base}\OperatorTok{)} \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ S}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
  \OperatorTok{\}}
  \KeywordTok{using}\NormalTok{ Hash}\OperatorTok{::}\NormalTok{initHash}\OperatorTok{;}
  \KeywordTok{using}\NormalTok{ Hash}\OperatorTok{::}\NormalTok{suba}\OperatorTok{;}
  \KeywordTok{using}\NormalTok{ Hash}\OperatorTok{::}\NormalTok{subb}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ mlen}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ qury}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  
  \DataTypeTok{int}\NormalTok{ main}\OperatorTok{()\{}
      \DataTypeTok{clock\_t}\NormalTok{ t0 }\OperatorTok{=}\NormalTok{ clock}\OperatorTok{();}
  \NormalTok{    freopen}\OperatorTok{(}\StringTok{"in.txt"}\OperatorTok{,} \StringTok{"r"}\OperatorTok{,}\NormalTok{ stdin}\OperatorTok{);}
  \NormalTok{    scanf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%s}\StringTok{"}\OperatorTok{,}\NormalTok{ S }\OperatorTok{+} \DecValTok{1}\OperatorTok{);}\NormalTok{ n }\OperatorTok{=}\NormalTok{ strlen}\OperatorTok{(}\NormalTok{S }\OperatorTok{+} \DecValTok{1}\OperatorTok{);}
  \NormalTok{    initHash}\OperatorTok{(}\NormalTok{n}\OperatorTok{);}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
          \ControlFlowTok{if}\OperatorTok{(}\NormalTok{S}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{!=}\NormalTok{ S}\OperatorTok{[}\NormalTok{i }\OperatorTok{+} \DecValTok{1}\OperatorTok{])} \OperatorTok{\{}\NormalTok{ mlen}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \DecValTok{0}\OperatorTok{;} \ControlFlowTok{continue}\OperatorTok{;} \OperatorTok{\}}
          \DataTypeTok{int}\NormalTok{ L }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
          \DataTypeTok{int}\NormalTok{ R }\OperatorTok{=}\NormalTok{ i}\OperatorTok{;}
          \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
          \ControlFlowTok{while}\OperatorTok{(}\NormalTok{L }\OperatorTok{\textless{}}\NormalTok{ R}\OperatorTok{)\{}
              \DataTypeTok{int}\NormalTok{ mid }\OperatorTok{=}\NormalTok{ L }\OperatorTok{+} \OperatorTok{((}\NormalTok{R }\OperatorTok{{-}}\NormalTok{ L }\OperatorTok{+} \DecValTok{1}\OperatorTok{)} \OperatorTok{\textgreater{}\textgreater{}} \DecValTok{1}\OperatorTok{);}
              \ControlFlowTok{if}\OperatorTok{(}\NormalTok{suba}\OperatorTok{(}\NormalTok{i }\OperatorTok{{-}}\NormalTok{ mid }\OperatorTok{+} \DecValTok{1}\OperatorTok{,}\NormalTok{ i}\OperatorTok{)} \OperatorTok{==}\NormalTok{ subb}\OperatorTok{(}\NormalTok{i }\OperatorTok{+} \DecValTok{1}\OperatorTok{,}\NormalTok{ i }\OperatorTok{+}\NormalTok{ mid}\OperatorTok{))}\NormalTok{ ans }\OperatorTok{=}\NormalTok{ mid}\OperatorTok{,}\NormalTok{ L }\OperatorTok{=}\NormalTok{ mid}\OperatorTok{;}
              \ControlFlowTok{else}\NormalTok{ R }\OperatorTok{=}\NormalTok{ mid }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{;}
          \OperatorTok{\}}
  \NormalTok{        mlen}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ ans}\OperatorTok{;}
      \OperatorTok{\}}
  
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ qury}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ i }\OperatorTok{{-}}\NormalTok{ mlen}\OperatorTok{[}\NormalTok{i}\OperatorTok{];}
  
      \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=}\NormalTok{ i }\OperatorTok{+} \DecValTok{1}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}=}\NormalTok{ i }\OperatorTok{+}\NormalTok{ mlen}\OperatorTok{[}\NormalTok{i}\OperatorTok{];}\NormalTok{j}\OperatorTok{++)}\NormalTok{ ans }\OperatorTok{+=} \OperatorTok{(}\NormalTok{j }\OperatorTok{{-}}\NormalTok{ mlen}\OperatorTok{[}\NormalTok{j}\OperatorTok{]} \OperatorTok{\textless{}=}\NormalTok{ i}\OperatorTok{);}
      \OperatorTok{\}}
  \NormalTok{    printf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%d}\StringTok{"}\OperatorTok{,}\NormalTok{ ans}\OperatorTok{);}
      \ControlFlowTok{return} \DecValTok{0}\OperatorTok{;}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  
  \begin{Shaded}
  \begin{Highlighting}[]
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstdio\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cstring\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}cmath\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}stack\textgreater{}}
  \PreprocessorTok{\#include }\ImportTok{\textless{}iostream\textgreater{}}
  \PreprocessorTok{\#define MOD }\DecValTok{1000000007}
  \KeywordTok{using} \KeywordTok{namespace}\NormalTok{ std}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ read}\OperatorTok{()\{} \DataTypeTok{int}\NormalTok{ x}\OperatorTok{;}\NormalTok{ scanf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%d}\StringTok{"}\OperatorTok{,} \OperatorTok{\&}\NormalTok{x}\OperatorTok{);} \ControlFlowTok{return}\NormalTok{ x}\OperatorTok{;} \OperatorTok{\}}
  \AttributeTok{const} \DataTypeTok{int}\NormalTok{ \_ }\OperatorTok{=} \FloatTok{1e5} \OperatorTok{+} \DecValTok{100}\OperatorTok{;}
  \AttributeTok{const} \DataTypeTok{int}\NormalTok{ MAXD }\OperatorTok{=} \FloatTok{1e3} \OperatorTok{+} \DecValTok{100}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ head}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \KeywordTok{struct}\NormalTok{ edges}\OperatorTok{\{}
      \DataTypeTok{int}\NormalTok{ node}\OperatorTok{;}
      \DataTypeTok{int}\NormalTok{ nxt}\OperatorTok{;}
  \OperatorTok{\}}\NormalTok{edge}\OperatorTok{[}\NormalTok{\_ }\OperatorTok{\textless{}\textless{}} \DecValTok{1}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ tot }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
  \DataTypeTok{void}\NormalTok{ add}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ u}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ v}\OperatorTok{)\{}
  \NormalTok{    tot}\OperatorTok{++;}
  \NormalTok{    edge}\OperatorTok{[}\NormalTok{tot}\OperatorTok{].}\NormalTok{node }\OperatorTok{=}\NormalTok{ v}\OperatorTok{;}
  \NormalTok{    edge}\OperatorTok{[}\NormalTok{tot}\OperatorTok{].}\NormalTok{nxt  }\OperatorTok{=}\NormalTok{ head}\OperatorTok{[}\NormalTok{u}\OperatorTok{];}
  \NormalTok{    head}\OperatorTok{[}\NormalTok{u}\OperatorTok{]}        \OperatorTok{=}\NormalTok{ tot}\OperatorTok{;}
  \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ n}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ rt }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ C}\OperatorTok{[}\NormalTok{MAXD }\OperatorTok{+} \DecValTok{100}\OperatorTok{][}\NormalTok{MAXD }\OperatorTok{+} \DecValTok{100}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ frc}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ dp}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ pow}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ a}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ b}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ P}\OperatorTok{)}  \OperatorTok{\{} \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{1}\OperatorTok{;} \ControlFlowTok{while}\OperatorTok{(}\NormalTok{b}\OperatorTok{)} \OperatorTok{\{} \ControlFlowTok{if}\OperatorTok{(}\NormalTok{b }\OperatorTok{\&} \DecValTok{1}\OperatorTok{)}\NormalTok{ ans }\OperatorTok{=} \OperatorTok{(}\NormalTok{ans }\OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ a}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ P}\OperatorTok{;}\NormalTok{ a }\OperatorTok{=} \OperatorTok{(}\NormalTok{a }\OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ a}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ P}\OperatorTok{;}\NormalTok{ b }\OperatorTok{\textgreater{}\textgreater{}=} \DecValTok{1}\OperatorTok{;} \OperatorTok{\}} \ControlFlowTok{return}\NormalTok{ ans}\OperatorTok{;} \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ inv}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ x}\OperatorTok{)\{} \ControlFlowTok{return}\NormalTok{ pow}\OperatorTok{(}\NormalTok{x}\OperatorTok{,}\NormalTok{ MOD }\OperatorTok{{-}} \DecValTok{2}\OperatorTok{,}\NormalTok{ MOD}\OperatorTok{);} \OperatorTok{\}}
  \AttributeTok{const} \DataTypeTok{int}\NormalTok{ DB }\OperatorTok{=} \DecValTok{20}\OperatorTok{;}
  \DataTypeTok{void}\NormalTok{ init}\OperatorTok{()\{}
  \NormalTok{    C}\OperatorTok{[}\DecValTok{0}\OperatorTok{][}\DecValTok{0}\OperatorTok{]} \OperatorTok{=} \DecValTok{1}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ MAXD}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
  \NormalTok{        C}\OperatorTok{[}\NormalTok{i}\OperatorTok{][}\DecValTok{0}\OperatorTok{]} \OperatorTok{=} \DecValTok{1}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ j }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ j }\OperatorTok{\textless{}=}\NormalTok{ i}\OperatorTok{;}\NormalTok{ j}\OperatorTok{++)\{}
  \NormalTok{            C}\OperatorTok{[}\NormalTok{i}\OperatorTok{][}\NormalTok{j}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{ C}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{][}\NormalTok{j}\OperatorTok{]} \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ C}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{][}\NormalTok{j }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
  \NormalTok{    frc}\OperatorTok{[}\DecValTok{0}\OperatorTok{]} \OperatorTok{=} \DecValTok{1}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ \_ }\OperatorTok{{-}} \DecValTok{10}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ frc}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{ frc}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*} \OperatorTok{(}\NormalTok{i}\OperatorTok{)} \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ MAXD}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{}
  \NormalTok{        dp}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \DecValTok{0}\OperatorTok{;}
          \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ d }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ d }\OperatorTok{\textless{}=}\NormalTok{ i}\OperatorTok{;}\NormalTok{ d}\OperatorTok{++)\{}
  \NormalTok{            dp}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{dp}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+} \OperatorTok{(}
                  \OperatorTok{(}  \OperatorTok{(} \OperatorTok{(}\NormalTok{C}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{][}\NormalTok{d }\OperatorTok{{-}} \DecValTok{1}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ C}\OperatorTok{[}\NormalTok{i}\OperatorTok{][}\NormalTok{d}\OperatorTok{])} \OperatorTok{\%}\NormalTok{ MOD }\OperatorTok{)} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ frc}\OperatorTok{[}\NormalTok{i }\OperatorTok{{-}}\NormalTok{ d}\OperatorTok{]}  \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}
                      \OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
          \OperatorTok{\}}
      \OperatorTok{\}}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ MAXD}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ dp}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{dp}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ inv}\OperatorTok{(}\NormalTok{frc}\OperatorTok{[}\NormalTok{i}\OperatorTok{]))} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
  \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
  \KeywordTok{struct}\NormalTok{ Stack}\OperatorTok{\{} \DataTypeTok{int}\NormalTok{ v}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];} \DataTypeTok{int}\NormalTok{ top}\OperatorTok{;}\NormalTok{ Stack}\OperatorTok{()\{}\NormalTok{ top }\OperatorTok{=} \DecValTok{0}\OperatorTok{;} \OperatorTok{\}} \KeywordTok{inline} \DataTypeTok{int} \OperatorTok{*}\NormalTok{GetHead}\OperatorTok{()\{} \ControlFlowTok{return} \OperatorTok{\&}\NormalTok{v}\OperatorTok{[}\DecValTok{0}\OperatorTok{];} \OperatorTok{\}} \KeywordTok{inline} \DataTypeTok{int}\OperatorTok{*}\NormalTok{ GetTail}\OperatorTok{()\{} \ControlFlowTok{return} \OperatorTok{\&}\NormalTok{v}\OperatorTok{[}\NormalTok{top}\OperatorTok{];} \OperatorTok{\}} \DataTypeTok{void}\NormalTok{ push}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ x}\OperatorTok{)\{}\NormalTok{v}\OperatorTok{[}\NormalTok{top}\OperatorTok{++]} \OperatorTok{=}\NormalTok{ x}\OperatorTok{;\}} \DataTypeTok{void}\NormalTok{ pop}\OperatorTok{()\{}\NormalTok{top }\OperatorTok{{-}{-};\}} \OperatorTok{\};}
  \NormalTok{Stack S}\OperatorTok{;}
  \DataTypeTok{int}\NormalTok{ val}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{int}\NormalTok{ NodeVal}\OperatorTok{[}\NormalTok{\_}\OperatorTok{];}
  \DataTypeTok{void}\NormalTok{ dfs0}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ o}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ fa}\OperatorTok{,} \DataTypeTok{int}\NormalTok{ dep}\OperatorTok{)\{}
  \NormalTok{    S}\OperatorTok{.}\NormalTok{push}\OperatorTok{(}\NormalTok{o}\OperatorTok{);}
      \DataTypeTok{int}\NormalTok{ now }\OperatorTok{=}\NormalTok{ dep}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int} \OperatorTok{*}\NormalTok{i }\OperatorTok{=}\NormalTok{ S}\OperatorTok{.}\NormalTok{GetHead}\OperatorTok{();}\NormalTok{ i }\OperatorTok{!=}\NormalTok{ S}\OperatorTok{.}\NormalTok{GetTail}\OperatorTok{();}\NormalTok{ i}\OperatorTok{++)\{}
  \NormalTok{        val}\OperatorTok{[}\NormalTok{o}\OperatorTok{]} \OperatorTok{=} \OperatorTok{(}\NormalTok{  val}\OperatorTok{[}\NormalTok{o}\OperatorTok{]} \OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+} \OperatorTok{(}\NormalTok{dp}\OperatorTok{[}\NormalTok{now}\OperatorTok{]} \OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ NodeVal}\OperatorTok{[*}\NormalTok{i}\OperatorTok{])} \OperatorTok{\%}\NormalTok{ MOD  }\OperatorTok{)} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
  \NormalTok{        now }\OperatorTok{{-}{-};}
      \OperatorTok{\}}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=}\NormalTok{ head}\OperatorTok{[}\NormalTok{o}\OperatorTok{];}\NormalTok{ i }\OperatorTok{;}\NormalTok{ i }\OperatorTok{=}\NormalTok{ edge}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{nxt}\OperatorTok{)\{}
          \DataTypeTok{int}\NormalTok{ ex }\OperatorTok{=}\NormalTok{ edge}\OperatorTok{[}\NormalTok{i}\OperatorTok{].}\NormalTok{node}\OperatorTok{;}
          \ControlFlowTok{if}\OperatorTok{(}\NormalTok{ex }\OperatorTok{==}\NormalTok{ fa}\OperatorTok{)} \ControlFlowTok{continue}\OperatorTok{;}
  \NormalTok{        dfs0}\OperatorTok{(}\NormalTok{ex}\OperatorTok{,}\NormalTok{ o}\OperatorTok{,}\NormalTok{ dep }\OperatorTok{+} \DecValTok{1}\OperatorTok{);}
      \OperatorTok{\}}
  \NormalTok{    S}\OperatorTok{.}\NormalTok{pop}\OperatorTok{();}
  \OperatorTok{\}}
  \DataTypeTok{int}\NormalTok{ main}\OperatorTok{()\{}
  \NormalTok{    n }\OperatorTok{=}\NormalTok{ read}\OperatorTok{();}
  \NormalTok{    init}\OperatorTok{();}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)\{} \DataTypeTok{int}\NormalTok{ u }\OperatorTok{=}\NormalTok{ read}\OperatorTok{(),}\NormalTok{ v }\OperatorTok{=}\NormalTok{ read}\OperatorTok{();}\NormalTok{ add}\OperatorTok{(}\NormalTok{u}\OperatorTok{,}\NormalTok{ v}\OperatorTok{);}\NormalTok{ add}\OperatorTok{(}\NormalTok{v}\OperatorTok{,}\NormalTok{ u}\OperatorTok{);} \OperatorTok{\}}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ NodeVal}\OperatorTok{[}\NormalTok{i}\OperatorTok{]} \OperatorTok{=}\NormalTok{ read}\OperatorTok{();}
  \NormalTok{    dfs0}\OperatorTok{(}\DecValTok{1}\OperatorTok{,} \OperatorTok{{-}}\DecValTok{1}\OperatorTok{,} \DecValTok{1}\OperatorTok{);}
      \DataTypeTok{int}\NormalTok{ ans }\OperatorTok{=} \DecValTok{0}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ ans }\OperatorTok{=} \OperatorTok{(}\NormalTok{ans }\OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ NodeVal}\OperatorTok{[}\NormalTok{i}\OperatorTok{])} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
      \ControlFlowTok{for}\OperatorTok{(}\DataTypeTok{int}\NormalTok{ i }\OperatorTok{=} \DecValTok{1}\OperatorTok{;}\NormalTok{ i }\OperatorTok{\textless{}=}\NormalTok{ n}\OperatorTok{;}\NormalTok{ i}\OperatorTok{++)}\NormalTok{ ans }\OperatorTok{=} \OperatorTok{(}\NormalTok{ans }\OperatorTok{+}\DecValTok{0}\BuiltInTok{ll}\OperatorTok{+}\NormalTok{ val}\OperatorTok{[}\NormalTok{i}\OperatorTok{])} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{;}
  \NormalTok{    printf}\OperatorTok{(}\StringTok{"}\SpecialCharTok{\%d\textbackslash{}n}\StringTok{"}\OperatorTok{,} \OperatorTok{(}\NormalTok{ans }\OperatorTok{*}\DecValTok{1}\BuiltInTok{ll}\OperatorTok{*}\NormalTok{ frc}\OperatorTok{[}\NormalTok{n}\OperatorTok{])} \OperatorTok{\%}\NormalTok{ MOD}\OperatorTok{);}
      \ControlFlowTok{return} \DecValTok{0}\OperatorTok{;}
  \OperatorTok{\}}
  \end{Highlighting}
  \end{Shaded}
  
  
  \end{document}
[INFO] [makePDF] LaTeX run number 1
[INFO] [makePDF] LaTeX output
  This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Debian) (preloaded format=xelatex)
   restricted \write18 enabled.
  entering extended mode
  (.../input.tex
  LaTeX2e <2023-11-01> patch level 1
  L3 programming layer <2024-01-22>
  (.../article.cls
  Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
  (.../[system]
  (.../xcolor.sty
  (.../color.cfg)
  (.../xetex.def)
  (.../[system]
  (.../geometry.sty
  (.../keyval.sty)
  (.../ifvtex.sty
  (.../iftex.sty)))
  (.../amsmath.sty
  For additional information on amsmath, use the `?' option.
  (.../amstext.sty
  (.../amsgen.sty))
  (.../amsbsy.sty)
  (.../amsopn.sty))
  (.../amssymb.sty
  (.../amsfonts.sty))
  (.../unicode-math.sty
  (.../expl3.sty
  (.../l3backend-xetex.def))
  (.../unicode-math-xetex.sty
  (.../xparse.sty)
  (.../l3keys2e.sty)
  (.../fontspec.sty
  (.../fontspec-xetex.sty
  (.../fontenc.sty)
  (.../fontspec.cfg)))
  (.../fix-cm.sty
  (.../ts1enc.def))
  (.../unicode-math-table.tex)))
  (.../lmodern.sty)
  (.../xeCJK.sty
  (.../ctexhook.sty)
  (.../xtemplate.sty)
  (.../xeCJK.cfg))
  (.../upquote.sty
  (.../textcomp.sty))
  (.../microtype.sty
  (.../etoolbox.sty)
  (.../microtype-xetex.def)
  (.../microtype.cfg))
  (.../setspace.sty)
  (.../parskip.sty
  (.../kvoptions.sty
  (.../ltxcmds.sty)
  (.../kvsetkeys.sty)))
  (.../fancyvrb.sty)
  (.../bookmark.sty
  (.../hyperref.sty
  (.../kvdefinekeys.sty)
  (.../pdfescape.sty
  (.../pdftexcmds.sty
  (.../infwarerr.sty)))
  (.../hycolor.sty)
  (.../auxhook.sty)
  (.../nameref.sty
  (.../refcount.sty)
  (.../gettitlestring.sty))
  (.../pd1enc.def)
  (.../intcalc.sty)
  (.../puenc.def)
  (.../url.sty)
  (.../bitset.sty
  (.../bigintcalc.sty))
  (.../atbegshi-ltx.sty))
  (.../hxetex.def
  (.../stringenc.sty)
  (.../rerunfilecheck.sty
  (.../atveryend-ltx.sty)
  (.../uniquecounter.sty)))
  (.../bkm-dvipdfm.def))
  (.../xurl.sty)
  No file input.aux.
  *geometry* driver: auto-detecting
  *geometry* detected driver: xetex
  (.../mt-LatinModernRoman.cfg)
  
  Package hyperref Warning: Rerun to get /PageLabels entry.
  
  (.../omllmm.fd)
  (.../umsa.fd)
  (.../mt-msa.cfg)
  (.../umsb.fd)
  (.../mt-msb.cfg)
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/b/n' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 135.
  
  [1]
  
  Package xeCJK Warning: Unknown CJK family `\CJKttdefault' is being ignored.
  (xeCJK)                
  (xeCJK)                Try to use `\setCJKmonofont[<...>]{<...>}' to define
  (xeCJK)                it.
  
  [2] [3] [4] [5] [6] [7] (.../input.aux)
  
  LaTeX Font Warning: Some font shapes were not available, defaults substituted.
  
  
  LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
  
   )
  Output written on .../input.pdf (7 pages).
  Transcript written on .../input.log.
[INFO] [makePDF] Rerun needed
  Package hyperref Warning: Rerun to get /PageLabels entry.
  LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
[INFO] [makePDF] LaTeX run number 2
[INFO] [makePDF] LaTeX output
  This is XeTeX, Version 3.141592653-2.6-0.999995 (TeX Live 2023/Debian) (preloaded format=xelatex)
   restricted \write18 enabled.
  entering extended mode
  (.../input.tex
  LaTeX2e <2023-11-01> patch level 1
  L3 programming layer <2024-01-22>
  (.../article.cls
  Document Class: article 2023/05/17 v1.4n Standard LaTeX document class
  (.../[system]
  (.../xcolor.sty
  (.../color.cfg)
  (.../xetex.def)
  (.../[system]
  (.../geometry.sty
  (.../keyval.sty)
  (.../ifvtex.sty
  (.../iftex.sty)))
  (.../amsmath.sty
  For additional information on amsmath, use the `?' option.
  (.../amstext.sty
  (.../amsgen.sty))
  (.../amsbsy.sty)
  (.../amsopn.sty))
  (.../amssymb.sty
  (.../amsfonts.sty))
  (.../unicode-math.sty
  (.../expl3.sty
  (.../l3backend-xetex.def))
  (.../unicode-math-xetex.sty
  (.../xparse.sty)
  (.../l3keys2e.sty)
  (.../fontspec.sty
  (.../fontspec-xetex.sty
  (.../fontenc.sty)
  (.../fontspec.cfg)))
  (.../fix-cm.sty
  (.../ts1enc.def))
  (.../unicode-math-table.tex)))
  (.../lmodern.sty)
  (.../xeCJK.sty
  (.../ctexhook.sty)
  (.../xtemplate.sty)
  (.../xeCJK.cfg))
  (.../upquote.sty
  (.../textcomp.sty))
  (.../microtype.sty
  (.../etoolbox.sty)
  (.../microtype-xetex.def)
  (.../microtype.cfg))
  (.../setspace.sty)
  (.../parskip.sty
  (.../kvoptions.sty
  (.../ltxcmds.sty)
  (.../kvsetkeys.sty)))
  (.../fancyvrb.sty)
  (.../bookmark.sty
  (.../hyperref.sty
  (.../kvdefinekeys.sty)
  (.../pdfescape.sty
  (.../pdftexcmds.sty
  (.../infwarerr.sty)))
  (.../hycolor.sty)
  (.../auxhook.sty)
  (.../nameref.sty
  (.../refcount.sty)
  (.../gettitlestring.sty))
  (.../pd1enc.def)
  (.../intcalc.sty)
  (.../puenc.def)
  (.../url.sty)
  (.../bitset.sty
  (.../bigintcalc.sty))
  (.../atbegshi-ltx.sty))
  (.../hxetex.def
  (.../stringenc.sty)
  (.../rerunfilecheck.sty
  (.../atveryend-ltx.sty)
  (.../uniquecounter.sty)))
  (.../bkm-dvipdfm.def))
  (.../xurl.sty)
  (.../input.aux)
  *geometry* driver: auto-detecting
  *geometry* detected driver: xetex
  (.../mt-LatinModernRoman.cfg)
  (.../omllmm.fd)
  (.../umsa.fd)
  (.../mt-msa.cfg)
  (.../umsb.fd)
  (.../mt-msb.cfg)
  
  LaTeX Font Warning: Font shape `TU/ARPLUKaiCN(0)/b/n' undefined
  (Font)              using `TU/ARPLUKaiCN(0)/m/n' instead on input line 135.
  
  [1]
  
  Package xeCJK Warning: Unknown CJK family `\CJKttdefault' is being ignored.
  (xeCJK)                
  (xeCJK)                Try to use `\setCJKmonofont[<...>]{<...>}' to define
  (xeCJK)                it.
  
  [2] [3] [4] [5] [6] [7] (.../input.aux)
  
  LaTeX Font Warning: Some font shapes were not available, defaults substituted.
  
   )
  Output written on .../input.pdf (7 pages).
  Transcript written on .../input.log.