矩阵快速幂
杭电培训总结,侵删
引导问题
一个有0和1组成的字符串,人和子串都不能包含 101 101 101和 111 111 111,求满足要求的长度为 L ( 1 < = L < = 1 0 8 ) L(1<=L<=10^8) L(1<=L<=108)的字符串一共有多少,结果对 1 0 9 + 7 10^9+7 109+7求模。
思路:
设 f ( i ) f(i) f(i)为长度为 i i i的合法字符串的数量。
可知 f ( 1 ) = 2 f(1) = 2 f(1)=2 “1”,“0”
f ( 2 ) = 4 f(2)=4 f(2)=4 “00”,“01”,“10”,“11”
f
(
3
)
=
6
f(3)=6
f(3)=6 “000”,“001”,“010”,“011”,“100”,“101”,“110”,“111”
那么联想到 f ( n ) f(n) f(n),如果第 n n n位取 0 0 0,那么第 n − 1 n-1 n−1位和 n − 2 n-2 n−2位无论取什么,后三位也都不会构成 101 101 101或者 111 111 111。当第 n n n位确定为 0 0 0之后, f ( n ) = f ( n − 1 ) f(n)=f(n-1) f(n)=f(n−1)。
第
n
n
n位取
1
1
1,第
n
−
1
n-1
n−1位和
n
−
2
n-2
n−2位的组合有四种情况:00,01,10,11。10和11不能取。10和11和最后的一位1会组成非法字符串101和111。所以又分了两种子情况,第
n
−
1
n-1
n−1位和
n
−
2
n-2
n−2位为00和第
n
−
1
n-1
n−1位和
n
−
2
n-2
n−2位01的。由于00和第
n
−
3
n-3
n−3位不会构成非法字符串,数量是
f
(
n
−
3
)
f(n-3)
f(n−3)。但是01情况下,如果第
n
−
3
n-3
n−3位为1的,会组成101的非法串,所以第
n
−
3
n-3
n−3位只能为0,由于第
n
−
2
n-2
n−2位和
n
−
3
n-3
n−3位的00不会构成非法串,该种情况数量为
f
(
n
−
4
)
f(n-4)
f(n−4)
递推公式为:
f
(
n
)
=
f
(
n
−
1
)
+
f
(
n
−
2
)
+
f
(
n
−
4
)
f(n) = f(n-1) + f(n-2) + f(n-4)
f(n)=f(n−1)+f(n−2)+f(n−4)
矩阵乘法
//两个n行n列的矩阵相乘
const int maxn = 50;
int mat1[maxn][maxn], mat2[maxn][maxn];
int res[maxn][maxn];
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
for(int k=1;k<=n;++k)
res[i][j] += mat1[i][k]*mat2[k][j];
斐波那契数列
f ( 0 ) = 0 , f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(0)=0,f(n) = f(n-1)+f(n-2) f(0)=0,f(n)=f(n−1)+f(n−2)
构造一个矩阵:
[ f [ n ] f [ n − 1 ] ] = [ 1 1 1 0 ] ∗ [ f [ n − 1 ] f [ n − 2 ] ] \left[ \begin{matrix} f[n]\\ f[n-1] \end{matrix} \right]= \left[ \begin{matrix} 1 & 1\\ 1 & 0 \end{matrix} \right]* \left[ \begin{matrix} f[n-1]\\ f[n-2] \end{matrix} \right] [f[n]f[n−1]]=[1110]∗[f[n−1]f[n−2]]
设:
设 C ( n ) = [ f [ n ] f [ n − 1 ] ] B = [ 1 1 1 0 ] 设C(n)=\left[ \begin{matrix} f[n]\\ f[n-1] \end{matrix} \right] \\ B = \left[ \begin{matrix} 1 & 1\\ 1 & 0 \end{matrix} \right] 设C(n)=[f[n]f[n−1]]B=[1110]
等价于
C
(
n
)
=
B
∗
C
(
n
−
1
)
=
B
∗
B
∗
C
(
n
−
2
)
=
B
n
−
1
∗
C
(
1
)
C(n) = B * C(n-1) \\ = B * B * C(n-2) \\ = B^{n-1}*C(1)
C(n)=B∗C(n−1)=B∗B∗C(n−2)=Bn−1∗C(1)
①任意一个形如 f ( n ) = a ∗ f ( n − 1 ) + b ∗ f ( n − 2 ) f(n)=a*f(n-1)+b*f(n-2) f(n)=a∗f(n−1)+b∗f(n−2)
构 造 矩 阵 : [ f [ n ] f [ n − 1 ] ] = [ a b 1 0 ] ∗ [ f [ n − 1 ] f [ n − 2 ] ] 构造矩阵:\left[ \begin{matrix} f[n]\\ f[n-1] \end{matrix} \right] = \left[ \begin{matrix} a & b\\ 1 & 0 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2] \end{matrix} \right] 构造矩阵:[f[n]f[n−1]]=[a1b0]∗[f[n−1]f[n−2]]
例如 f ( n ) = 3 ∗ f ( n − 1 ) + 5 ∗ f ( n − 3 ) + 9 ∗ f ( n − 4 ) f(n)=3*f(n-1)+5*f(n-3)+9*f(n-4) f(n)=3∗f(n−1)+5∗f(n−3)+9∗f(n−4)
构造:
[
f
[
n
]
f
[
n
−
1
]
f
[
n
−
2
]
f
[
n
−
3
]
]
=
[
3
0
5
9
1
0
0
0
0
1
0
0
0
0
1
0
]
∗
[
f
[
n
−
1
]
f
[
n
−
2
]
f
[
n
−
3
]
f
[
n
−
4
]
]
\left[ \begin{matrix} f[n]\\ f[n-1]\\ f[n-2]\\ f[n-3] \end{matrix} \right] = \left[ \begin{matrix} 3 & 0 & 5 & 9\\ 1&0&0&0\\ 0&1&0&0\\ 0&0&1&0 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2]\\ f[n-3]\\ f[n-4] \end{matrix} \right]
⎣⎢⎢⎡f[n]f[n−1]f[n−2]f[n−3]⎦⎥⎥⎤=⎣⎢⎢⎡3100001050019000⎦⎥⎥⎤∗⎣⎢⎢⎡f[n−1]f[n−2]f[n−3]f[n−4]⎦⎥⎥⎤
② f ( n ) = a ∗ f ( n − 1 ) + b ∗ f ( n − 3 ) + c f(n)=a*f(n-1)+b*f(n-3)+c f(n)=a∗f(n−1)+b∗f(n−3)+c
[ f [ n ] f [ n − 1 ] f [ n − 2 ] 1 ] = [ a 0 b c 1 0 0 0 0 1 0 0 0 0 0 1 ] ∗ [ f [ n − 1 ] f [ n − 2 ] f [ n − 3 ] 1 ] \left[ \begin{matrix} f[n]\\ f[n-1]\\ f[n-2]\\ 1 \end{matrix} \right] = \left[ \begin{matrix} a&0&b&c\\ 1&0&0&0\\ 0&1&0&0\\ 0&0&0&1 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2]\\ f[n-3]\\ 1 \end{matrix} \right] ⎣⎢⎢⎡f[n]f[n−1]f[n−2]1⎦⎥⎥⎤=⎣⎢⎢⎡a1000010b000c001⎦⎥⎥⎤∗⎣⎢⎢⎡f[n−1]f[n−2]f[n−3]1⎦⎥⎥⎤
或者
[
f
[
n
]
f
[
n
−
1
]
f
[
n
−
2
]
c
]
=
[
a
0
b
1
1
0
0
0
0
1
0
0
0
0
0
1
]
∗
[
f
[
n
−
1
]
f
[
n
−
2
]
f
[
n
−
3
]
c
]
\left[ \begin{matrix} f[n]\\ f[n-1]\\ f[n-2]\\ c \end{matrix} \right] = \left[ \begin{matrix} a&0&b&1\\ 1&0&0&0\\ 0&1&0&0\\ 0&0&0&1 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2]\\ f[n-3]\\ c \end{matrix} \right]
⎣⎢⎢⎡f[n]f[n−1]f[n−2]c⎦⎥⎥⎤=⎣⎢⎢⎡a1000010b0001001⎦⎥⎥⎤∗⎣⎢⎢⎡f[n−1]f[n−2]f[n−3]c⎦⎥⎥⎤
③ f ( 1 ) = 1 , f ( 2 ) = 2 , f ( n ) = f ( n − 1 ) + 2 f ( n − 2 ) + n 3 f(1)=1,f(2)=2,f(n)=f(n-1)+2f(n-2)+n^3 f(1)=1,f(2)=2,f(n)=f(n−1)+2f(n−2)+n3
根据二项式定理将 n 3 n^3 n3拆分为 n 3 = ( n − 1 + 1 ) 3 = ( n − 1 ) 3 + 3 ( n − 1 ) 2 + 3 ( n − 1 ) + 1 n^3=(n-1+1)^3=(n-1)^3+3(n-1)^2+3(n-1)+1 n3=(n−1+1)3=(n−1)3+3(n−1)2+3(n−1)+1
那么 n 2 = ( n − 1 ) 2 + 2 ( n − 1 ) + 1 n^2=(n-1)^2+2(n-1)+1 n2=(n−1)2+2(n−1)+1
f
(
n
)
=
f
(
n
−
1
)
+
2
f
(
n
−
2
)
+
n
3
=
f
(
n
−
1
)
+
2
f
(
n
−
2
)
+
(
n
−
1
)
3
+
3
(
n
−
1
)
2
+
3
(
n
−
1
)
+
1
f(n)\\=f(n-1)+2f(n-2)+n^3 \\=f(n-1)+2f(n-2)+(n-1)^3+3(n-1)^2+3(n-1)+1
f(n)=f(n−1)+2f(n−2)+n3=f(n−1)+2f(n−2)+(n−1)3+3(n−1)2+3(n−1)+1
[
f
[
n
]
f
[
n
−
1
]
n
3
n
2
n
1
]
=
[
1
2
1
3
3
1
1
0
0
0
0
0
0
0
1
3
3
1
0
0
0
1
2
1
0
0
0
0
1
1
0
0
0
0
0
1
]
∗
[
f
[
n
−
1
]
f
[
n
−
2
]
(
n
−
1
)
3
(
n
−
1
)
2
(
n
−
1
)
1
]
\left[ \begin{matrix} f[n]\\ f[n-1]\\ n^3\\ n^2 \\n\\1 \end{matrix} \right] = \left[ \begin{matrix} 1&2&1&3&3&1\\1&0&0&0&0&0 \\ 0&0&1&3&3&1 \\ 0&0&0&1&2&1 \\0&0&0&0&1&1\\0&0&0&0&0&1 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2]\\ (n-1)^3\\ (n-1)^2\\(n-1)\\1 \end{matrix} \right]
⎣⎢⎢⎢⎢⎢⎢⎡f[n]f[n−1]n3n2n1⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡110000200000101000303100303210101111⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡f[n−1]f[n−2](n−1)3(n−1)2(n−1)1⎦⎥⎥⎥⎥⎥⎥⎤
例如:
f
(
n
)
=
f
(
n
−
1
)
+
2
f
(
n
−
2
)
+
n
3
+
n
2
f(n)=f(n-1)+2f(n-2)+n^3+n^2
f(n)=f(n−1)+2f(n−2)+n3+n2
[
f
[
n
]
f
[
n
−
1
]
n
3
n
2
n
1
]
=
[
1
2
1
4
5
2
1
0
0
0
0
0
0
0
1
3
3
1
0
0
0
1
2
1
0
0
0
0
1
1
0
0
0
0
0
1
]
∗
[
f
[
n
−
1
]
f
[
n
−
2
]
(
n
−
1
)
3
(
n
−
1
)
2
(
n
−
1
)
1
]
\left[ \begin{matrix} f[n]\\ f[n-1]\\ n^3\\ n^2 \\n\\1 \end{matrix} \right] = \left[ \begin{matrix} 1&2&1&4&5&2\\1&0&0&0&0&0 \\ 0&0&1&3&3&1 \\ 0&0&0&1&2&1 \\0&0&0&0&1&1\\0&0&0&0&0&1 \end{matrix} \right] * \left[ \begin{matrix} f[n-1]\\ f[n-2]\\ (n-1)^3\\ (n-1)^2\\(n-1)\\1 \end{matrix} \right]
⎣⎢⎢⎢⎢⎢⎢⎡f[n]f[n−1]n3n2n1⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡110000200000101000403100503210201111⎦⎥⎥⎥⎥⎥⎥⎤∗⎣⎢⎢⎢⎢⎢⎢⎡f[n−1]f[n−2](n−1)3(n−1)2(n−1)1⎦⎥⎥⎥⎥⎥⎥⎤
二项式定理:
(
x
+
y
)
n
=
(
n
0
)
x
n
y
0
+
(
n
1
)
x
n
−
1
y
1
+
(
n
2
)
x
n
−
2
y
2
+
.
.
.
+
(
n
n
−
1
)
x
1
y
n
−
1
+
(
n
n
)
x
0
y
n
(
x
+
y
)
n
=
∑
k
=
0
n
(
n
k
)
x
n
−
k
y
k
=
∑
k
=
0
n
(
n
k
)
x
k
y
n
−
k
(x+y)^n= \left( \begin{matrix} n\\ 0 \end{matrix} \right)x^ny^0+ \left( \begin{matrix} n\\1 \end{matrix} \right)x^{n-1}y^1+ \left( \begin{matrix} n\\2 \end{matrix} \right)x^{n-2}y^2+ ...+ \left( \begin{matrix} n\\n-1 \end{matrix} \right)x^{1}y^{n-1}+ \left( \begin{matrix} n\\n \end{matrix} \right)x^{0}y^{n} \\ \\ \\ (x+y)^n= \sum_{k=0}^n\left( \begin{matrix} n\\k \end{matrix} \right)x^{n-k}y^{k} = \sum_{k=0}^n\left( \begin{matrix} n\\k \end{matrix} \right)x^{k}y^{n-k}
(x+y)n=(n0)xny0+(n1)xn−1y1+(n2)xn−2y2+...+(nn−1)x1yn−1+(nn)x0yn(x+y)n=k=0∑n(nk)xn−kyk=k=0∑n(nk)xkyn−k
④包含前缀和
T [ 0 ] = T [ 1 ] = t [ 2 ] = 1 T[0]=T[1]=t[2]=1 T[0]=T[1]=t[2]=1
T [ n ] = T [ n − 1 ] + T [ n − 2 ] + T [ n − 3 ] ( n > = 3 ) T[n] = T[n-1]+T[n-2]+T[n-3]\ \ (n>=3) T[n]=T[n−1]+T[n−2]+T[n−3] (n>=3)
给定 a a a和 b b b ( 1 < = a < = b < = 1 0 9 ) (1<=a<=b<=10^9) (1<=a<=b<=109),求 ( T [ a ] + T [ a + 1 ] + . . . + T [ b ] ) % ( 1 0 9 + 7 ) (T[a]+T[a+1]+...+T[b])\%(10^9+7) (T[a]+T[a+1]+...+T[b])%(109+7)
思路: 前 缀 和 S [ n ] = S [ n − 1 ] + T [ n ] S [ n ] = S [ n − 1 ] + T [ n − 1 ] + T [ n − 2 ] + T [ n − 3 ] 前缀和\\S[n]=S[n-1]+T[n] \\S[n]=S[n-1]+T[n-1]+T[n-2]+T[n-3] 前缀和S[n]=S[n−1]+T[n]S[n]=S[n−1]+T[n−1]+T[n−2]+T[n−3]
构造矩阵:
[
S
[
n
]
T
[
n
]
T
[
n
−
1
]
T
[
n
−
2
]
]
=
[
1
1
1
1
0
1
1
1
0
1
0
0
0
0
1
0
]
[
S
[
n
−
1
]
T
[
n
−
1
]
T
[
n
−
2
]
T
[
n
−
3
]
]
\left[ \begin{matrix} S[n]\\T[n]\\T[n-1]\\T[n-2] \end{matrix} \right] = \left[ \begin{matrix} 1&1&1&1\\0&1&1&1\\0&1&0&0\\0&0&1&0 \end{matrix} \right] \left[ \begin{matrix} S[n-1]\\T[n-1]\\T[n-2]\\T[n-3] \end{matrix} \right]
⎣⎢⎢⎡S[n]T[n]T[n−1]T[n−2]⎦⎥⎥⎤=⎣⎢⎢⎡1000111011011100⎦⎥⎥⎤⎣⎢⎢⎡S[n−1]T[n−1]T[n−2]T[n−3]⎦⎥⎥⎤
⑤前缀平方和
A [ 0 ] = 1 A[0]=1 A[0]=1, A [ 1 ] = 1 A[1]=1 A[1]=1, A [ n ] = X ∗ A [ n − 1 ] + Y ∗ A [ n − 2 ] ( n > = 2 ) A[n]=X*A[n-1]+Y*A[n-2]\ \ (n>=2) A[n]=X∗A[n−1]+Y∗A[n−2] (n>=2)
求 S [ n ] = ∑ 0 n A [ i ] 2 S[n]=\sum_0^nA[i]^2 S[n]=∑0nA[i]2
分析:
S [ n ] = s [ n − 1 ] + A [ n ] 2 S[n]=s[n-1]+A[n]^2 S[n]=s[n−1]+A[n]2
A [ n ] 2 = X 2 ∗ A [ n − 1 ] 2 + Y 2 ∗ A [ n − 2 ] 2 + 2 X Y ∗ A [ n − 1 ] A [ n − 2 ] A[n]^2=X^2*A[n-1]^2+Y^2*A[n-2]^2+2XY*A[n-1]A[n-2] A[n]2=X2∗A[n−1]2+Y2∗A[n−2]2+2XY∗A[n−1]A[n−2]
A
[
n
]
乘
以
A
[
n
−
1
]
:
A
[
n
]
=
X
∗
A
[
n
−
1
]
+
Y
∗
A
[
n
−
2
]
=
>
A
[
n
]
A
[
n
−
1
]
=
X
∗
A
[
n
−
1
]
2
+
Y
∗
A
[
n
−
2
]
A
[
n
−
1
]
A[n]乘以A[n-1] : A[n]=X*A[n-1]+Y*A[n-2] => A[n]A[n-1]=X*A[n-1]^2+Y*A[n-2]A[n-1]
A[n]乘以A[n−1]:A[n]=X∗A[n−1]+Y∗A[n−2]=>A[n]A[n−1]=X∗A[n−1]2+Y∗A[n−2]A[n−1]
[
S
[
n
]
A
[
n
]
2
A
[
n
−
1
]
2
A
[
n
]
A
[
n
−
2
]
]
=
[
1
X
2
Y
2
2
X
Y
0
X
2
Y
2
2
X
Y
0
1
0
0
0
X
0
Y
]
[
S
[
n
−
1
]
A
[
n
−
1
]
2
A
[
n
−
2
]
2
A
[
n
−
1
]
A
[
n
−
2
]
]
\left[ \begin{matrix} S[n]\\A[n]^2\\A[n-1]^2\\A[n]A[n-2] \end{matrix} \right] = \left[ \begin{matrix} 1&X^2&Y^2&2XY\\0&X^2&Y^2&2XY\\0&1&0&0\\0&X&0&Y \end{matrix} \right] \left[ \begin{matrix} S[n-1]\\A[n-1]^2\\A[n-2]^2\\A[n-1]A[n-2] \end{matrix} \right]
⎣⎢⎢⎡S[n]A[n]2A[n−1]2A[n]A[n−2]⎦⎥⎥⎤=⎣⎢⎢⎡1000X2X21XY2Y2002XY2XY0Y⎦⎥⎥⎤⎣⎢⎢⎡S[n−1]A[n−1]2A[n−2]2A[n−1]A[n−2]⎦⎥⎥⎤
例题
一个
01
01
01循环串,长度为
L
(
L
<
=
100
)
L(L<=100)
L(L<=100),这个串每秒都会进行一次变换,变换规则是:如果左边是1,则改变自己的状态,否则保持不变。
给定初始状态,问
n
n
n秒以后这个串的状态。
分析:
定义状态
f
(
n
,
L
)
f(n,L)
f(n,L)表示n秒之后,第L个字符是0还是1;
f
(
n
,
L
)
=
{
f
(
n
−
1
,
L
)
(
f
(
n
−
1
,
L
−
1
)
=
0
)
1
−
f
(
n
−
1
,
L
)
(
f
(
n
−
1
,
L
−
1
)
=
1
)
f(n,L)= \begin{cases} f(n-1,L)\ \ \ \ \ \ \ \ \ \ \ (f(n-1,L-1)=0)\\ 1-f(n-1,L)\ \ \ \ (f(n-1,L-1)=1) \end{cases}
f(n,L)={f(n−1,L) (f(n−1,L−1)=0)1−f(n−1,L) (f(n−1,L−1)=1)
简化:
如果 f ( n − 1 , L − 1 ) = 0 f(n-1,L-1)=0 f(n−1,L−1)=0; f ( n − 1 , L ) = f ( n − 1 , L ) + 0 = f ( n − 1 , L ) + f ( n − 1 , L − 1 ) f(n-1,L)=f(n-1,L) + 0 = f(n-1,L)+f(n-1,L-1) f(n−1,L)=f(n−1,L)+0=f(n−1,L)+f(n−1,L−1)
如果 f ( n − 1 , L − 1 ) = 1 f(n-1,L-1)=1 f(n−1,L−1)=1; 1 − f ( n − 1 , L ) = f ( n − 1 , L − 1 ) − f ( n − 1 , L ) 1-f(n-1,L)=f(n-1,L-1)-f(n-1,L) 1−f(n−1,L)=f(n−1,L−1)−f(n−1,L)
由于取值只有0和1,那么1+1=0
化简为 f ( n , L ) = f ( n − 1 , L − 1 ) + f ( n − 1 , L ) f(n,L) = f(n-1,L-1)+f(n-1,L) f(n,L)=f(n−1,L−1)+f(n−1,L)
构造:
[
f
(
n
,
1
)
f
(
n
,
2
)
.
.
.
f
(
n
,
L
)
]
=
[
1
0
.
.
.
0
1
1
1
.
.
.
0
0
.
.
.
.
.
.
.
.
.
1
0
0
0
.
.
.
1
1
]
∗
[
f
(
n
−
1
,
1
)
f
(
n
−
1
,
2
)
.
.
.
f
(
n
−
1
,
L
)
]
\left[ \begin{matrix} f(n,1)\\f(n,2)\\...\\f(n,L) \end{matrix} \right]= \left[ \begin{matrix} 1&0&...&0&1\\1&1&...&0&0\\...&...&...&1&0\\0&0&...&1&1 \end{matrix} \right]* \left[ \begin{matrix} f(n-1,1)\\f(n-1,2)\\...\\f(n-1,L) \end{matrix} \right]
⎣⎢⎢⎡f(n,1)f(n,2)...f(n,L)⎦⎥⎥⎤=⎣⎢⎢⎡11...001...0............00111001⎦⎥⎥⎤∗⎣⎢⎢⎡f(n−1,1)f(n−1,2)...f(n−1,L)⎦⎥⎥⎤
矩阵快速幂模板
const int maxn = 12; //最大矩阵规模
int mod = 9973; //模数
int n; //矩阵规模
//矩阵结构体
struct mat {
int m[maxn][maxn];
mat() //构造函数 单位矩阵
{
memset(m,0,sizeof m);
for (int i=1;i<=n;++i)
m[i][i] = 1;
}
//[]运算符重载
int* operator[] (int index)
{
return m[index];
}
//矩阵乘法
mat operator*(mat& a)
{
mat res;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
res[i][j]=0;
for(int k=1;k<=n;++k)
res[i][j] = (res[i][j] + m[i][k] * a[k][j] % mod) % mod;
}
}
return res;
}
};
//快速幂
mat fastpow(mat a,int b)
{
mat res;
while(b)
{
if(b&1) res = res * a;
a = a * a;
b >>= 1;
}
return res;
}
int main()
{
/*Code*/
return 0;
}