#include using namespace std; #define si(a) (long)a.size() #define fi first #define se second #define all(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(int)(n);++i) templatebool chmin(S&a,F b){return bbool chmax(S&a,F b){return b>a?(a=b,1):0;} bool _=(ios::sync_with_stdio(0),cin.tie(0),cout< struct modint { int x; constexpr modint(long long x_=0):x(((x_%mod)+mod)%mod){} constexpr modint operator-(){ auto res=*this; res.x=(x?mod-x:0); return res; } constexpr modint& operator+=(modint r){ if((x+=r.x)>=mod) x-=mod; return *this; } constexpr modint& operator-=(modint r){ if((x-=r.x)<0) x+=mod; return *this; } constexpr modint& operator*=(modint r){ x=1ll*x*r.x%mod; return *this; } constexpr modint& operator/=(modint r){return *this*=r.inv();} constexpr friend modint operator+(modint a,modint b){return a+=b;} constexpr friend modint operator-(modint a,modint b){return a-=b;} constexpr friend modint operator*(modint a,modint b){return a*=b;} constexpr friend modint operator/(modint a,modint b){return a/=b;} constexpr modint inv() const {return pow(mod-2);} constexpr modint pow(long long b) const { assert(0<=b); modint a=*this,c=1; while(b){ if(b&1) c*=a; a*=a; b>>=1; } return c; } constexpr int val() const {return x;} constexpr friend ostream& operator<<(ostream& os,const modint& m){return os<>(istream& is,modint& m){ long long v; is>>v; m=modint(v); return is; } }; using mint=modint<>; template vector> mat_mul(vector> a,vector> b){ vector ret(si(a),vector(si(b[0]),0)); rep(i,si(a)){ rep(j,si(b[0])){ rep(k,si(b)){ ret[i][j]+=a[i][k]*b[k][j]; } } } return ret; } template vector> mat_pow(vector> a,long k){ vector ret(si(a),vector(si(a),0)); rep(i,si(a)) ret[i][i]=1; while(k>0){ if(k&1) ret=mat_mul(a,ret); a=mat_mul(a,a); k>>=1; } return ret; } int main(){ int N; long K; cin>>N>>K; N*=4; vector G(N+1,vector(N+1,0)); rep(i,N){ G[i][i+1]=mint(1)/5; if(i%4!=0){ G[i][0]=mint(3)/5; G[i][1]=mint(1)/5; } else{ G[i][0]=mint(4)/5; } } vector A=mat_pow(G,K); cout<