#pragma GCC optimize("Ofast") #pragma GCC target("avx2") char*mmap(); char wbuf[1<<25]; #define rd_skip() while(*rp++>=48) #define rd(v) long v=0;{int _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;} #define rep(v,e) for(long v=0;v=a?v:a) main(){ char*rp=mmap(0l,1l<<25,1,2,0,0ll); rd(n); char*kp=rp; rd_skip(); char*klen=rp-kp-1; long c[10]; c[0]=0; reps(i,1,10){ rd(ci); c[i]=ci; } if(klen>n){ write(1,"-1",2); _exit(0); } if(klen=0&&imax<=kp[d]-'0'){ chmax(imax,kp[d]-'0'); --d; ++c[*--wp-'0']; } if(d<0){ write(1,"-1",2); _exit(0); } { long i=kp[d]+1-'0'; while(!c[i]){ ++i; } *wp++=i+'0'; --c[i]; } reps(i,1,10){ memset(wp,i+'0',c[i]); wp+=c[i]; } write(1,wbuf,wp-wbuf); _exit(0); } }