#include using namespace std; #define ALL(x) begin(x),end(x) #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } struct RandomNumberGenerator{ mt19937 mt; RandomNumberGenerator():mt(chrono::steady_clock::now().time_since_epoch().count()){} // [a,b) int operator()(int a,int b){ uniform_int_distribution d(a,b-1); return d(mt); } }; const int LIM=20; signed main(){ mt19937 mt(chrono::steady_clock::now().time_since_epoch().count()); RandomNumberGenerator rand; int N,M;cin>>N>>M; vector A(M),B(M); cin>>A>>B; for(auto &x:A) x--; for(auto &x:B) x--; if(N<=LIM){ vector> dp(M+1,vector(N,0)); vector> pre(M+1,vector(N,0)); rep(i,N) dp[0][i]=1; rep(i,M){ rep(j,N){ if(dp[i][j]){ if(j) dp[i+1][j-1]=1,pre[i+1][j-1]=j; if(j+1 res; for(int i=M;i>=0;i--){ res.push_back(p+1); p=pre[i][p]; } reverse(ALL(res)); for(auto &x:res) cout< res; vector ope{-1,0,1}; rep(_,200){ int p=rand(0,N); res.push_back(p); bool can=true; for(int i=0;i