#include #include using namespace std; using namespace atcoder; typedef long long int ll; typedef long double ld; #define FOR(i,l,r) for(ll i=l;i=l;i--) #define RREP(i,n) RFOR(i,0,n) #define ALL(x) x.begin(),x.end() #define PA pair #define F first #define S second #define BS(A,x) binary_search(ALL(A),x) #define LB(A,x) (ll)(lower_bound(ALL(A),x)-A.begin()) #define UB(A,x) (ll)(upper_bound(ALL(A),x)-A.begin()) #define COU(A,x) (UB(A,x)-LB(A,x)) //#include //namespace mp=boost::multiprecision; //using Bint=mp::cpp_int; templateusing min_priority_queue=priority_queue,greater>; templatebool chmax(T&a,T b){if(abool chmin(T&a,T b){if(bvoid print(vectorA){REP(i,A.size()){if(i)cout<<" ";cout<>H>>W; vectorS(H); REP(i,H)cin>>S[i]; if(H+W==2){cout<<1<>>DP(H,vector>(W,vector(H))); if(S[0][0]==S[H-1][W-1])DP[0][0][H-1]=1; FOR(t,1,(H+W)/2)REP(i,H){ ll j=t-i; if(j<0||j>=W)continue; REP(k,H){ ll l=H+W-2-t-k; if(l<0||l>=W||S[i][j]!=S[k][l])continue; //DP[i][j][k] if(i&&k