// g++ 1.cpp -std=c++17 -O2 -I . #include using namespace std; #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=start;i<(ll)(end);i++) #define per(i,start,end) for(ll i=start;i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) const int MAX=1010000; const long long MOD=998244353; long long fac[MAX],finv[MAX],inv[MAX]; void COMinit(){ fac[0]=fac[1]=1; finv[0]=finv[1]=1; inv[1]=1; for(int i=2;i>n>>m; four=inv_mod(pow_mod(4,n,MOD),MOD); mint ans=0; rep(x,-n-10,n+10){ ll ysq=x*x-m; if(ysq<0)continue; if(ysq==0){ ans+=sub(n,x,0); } else{ ll ysq2=sqrt(ysq); rep(y,ysq2-5,ysq2+5){ if(y*y==ysq&&y>0){ ans+=2*sub(n,x,y); } } } } cout<