//#include #include //#include //#include //#include //#define LL long long //#define INF 1000000007 //------------------------------------------------------------ //struct P{}; //------------------------------------------------------------ //void Max(int &num1,int num2) { if (num1num2) num1=num2; } //int Min(int num1,int num2) { return num11) if (c1[i-1][j ] == c2[i-1][k]) f[N][j][k ] += f[O][j][k]; if (i>1&&k>1) if (c1[i-1][j ] == c2[i-1][k-1]) f[N][j][k ] += f[O][j][k-1]; if (i>1&&j>1) if (c1[i-1][j-1] == c2[i-1][k]) f[N][j][k ] += f[O][j-1][k]; if (i>1&&j>1&&k>1) if (c1[i-1][j-1] == c2[i-1][k-1]) f[N][j][k ] += f[O][j-1][k-1]; f[N][j][k]%=5201314; } } } for (i=1; i<=n; i++) ans=(ans+f[N][i][i])%5201314; printf("%d\n",ans); /* for (i=1; i<=n; i++,printf("\n")) for (j=1; j<=n; j++) printf("%c ",c1[i][j]); for (i=1; i<=n; i++,printf("\n")) for (j=1; j<=n; j++) printf("%c ",c2[i][j]); */ /*for (i=1; i< n; i++) { for (j=1; j<=i; j++) { dx1=i+1-j; dy1=j; for (k=1; k<=i; k++) { dx2=n+1-k; dy2=n+k-i; if (tab[dx1][dy1]==tab[dx2][dy2]) { if (tab[dx-1][dy1]==tab[dx][]) } } } f[i][] }*/ } }