#include using namespace std; #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define pb push_back #define eb emplace_back #define all(v) (v).begin(),(v).end() #define fi first #define se second typedef vectorvint; typedef pairpint; typedef vectorvpint; templateinline void chmin(A &a,B b){if(a>b)a=b;} templateinline void chmax(A &a,B b){if(a ostream& operator<<(ostream& ost,const pair&p){ ost<<"{"< ostream& operator<<(ostream& ost,const vector&v){ ost<<"{"; for(int i=0;i struct ModInt{ uint32_t a; ModInt& s(uint32_t vv){ a=vv>=1; } return res; } ModInt inv()const{return pow(mod-2);} }; template istream& operator>>(istream& in,const ModInt& a){ return (in>>a.a); } template ostream& operator<<(ostream& out,const ModInt& a){ return (out<; using mint=ModInt<998244353>; template struct NumberTheoreticTransform{ static void ntt(vector&f){ int n=f.size(); int s=__lg(n); for(int i=0,j=1;j>1;k>(i^=k);k>>=1); if(i>j)swap(f[i],f[j]); } for(int m=1;m<=s;m++){ Mint wr=Mint(root).pow(Mint(-1).a>>m); for(int i=0;i&f){ reverse(f.begin()+1,f.end()); ntt(f); Mint in=Mint(f.size()).inv(); for(int i=0;iconvolute(const vector&A,const vector&B){ int n=1<<__lg(A.size()+B.size()-2)+1; vectora=A,b=B; a.resize(n);b.resize(n); ntt(a); ntt(b); for(int i=0;i; int mpow(int n,int m,int P){ int ret=1; while(m){ if(m&1)ret=ret*n%P; n=n*n%P; m>>=1; } return ret; } signed main(){ int P;cin>>P; vint A(P),B(P); for(int i=1;i>A[i]; for(int i=1;i>B[i]; if(P==2){ cout<X(P-1),Y(P-1); int gg=1; for(int i=0;i1)printf(" "); printf("%lld",ans[i]); } puts(""); return 0; }