#include using namespace std; using ll=long long; using pii=pair; #define all(a) a.begin(),a.end() #define pb push_back #define sz(a) ((int)a.size()) const int mod=998244353,G=3,N=1<<20; int add(int x, int y){x+=y; if(x>=mod) x-=mod; return x;} int sub(int x, int y){x-=y; if(x<0) x+=mod; return x;} int mul(int x, int y){return ((ll)x)*y%mod;} int Pow(int x, ll y=mod-2){int res=1; for(; y; x=mul(x,x),y>>=1) if(y&1) res=mul(res,x); return res;} int fac[N],inv[N],ifac[N]; inline int C(int n, int m){if(m<0||m>n) return 0; return mul(fac[n],mul(ifac[m],ifac[n-m]));} void init_comb(){ fac[0]=inv[1]=ifac[0]=1; for(int i=1; i& a, int n){ int i=0; for(int j=1; j>1; (i^=k)>=1); if(j& a, int n, bool inv=0){ bitrev(a,n); for(int L=2; L<=n; L<<=1){ int dx=N/L,dl=L>>1; for(int i=0; i Mul(vector a, vector b, int M=N){ if(a.empty()&&b.empty()) return {}; int m=a.size()+b.size()-1,n=1; while(n get(int n){ vector a(n*9+1),b(n*9+1); for(int i=0; i<=n*9; ++i) b[i]=C(i+n-1,n-1); for(int i=0; i*10<=n*9; ++i){ if(i%2==0) a[i*10]=C(n,i); else a[i*10]=sub(0,C(n,i)); } return Mul(a,b,n*9+1); } signed main(){ ios_base::sync_with_stdio(0),cin.tie(0); init_comb(); int n,k; cin >> n >> k; auto vec1=get(n/2),vec2=get((n+1)/2); int res=0; for(int r=0; r<11; ++r){ //cout << r << endl; vector vec3,vec4; for(int i=r; i