#include <stdio.h> #include <vector> #include <string.h> char x[500010]; std::vector<int> ans; int c[110],b; int func(int k) { if(k<1) return 0; int digit = x[b-k+1]-'0'; if(c[digit]>0) { ans.push_back(digit); c[digit]--; int t = func(k-1); if(t==1) return 1; c[digit]++; ans.pop_back(); } for(int i=digit+1;i<=9;i++) { if(c[i]>0) { ans.push_back(i); c[i]--; for(int j=1;j<=9;j++) while(c[j]--) ans.push_back(j); return 1; } } return 0; } int main() { int a; scanf("%d",&a); scanf("%s",x+1); b = strlen(x+1); for(int i=1;i<=9;i++) scanf("%d",&c[i]); if(b>a) printf("-1"); else if(b<a) { for(int i=1;i<=9;i++) while(c[i]--) printf("%d",i); return 0; } else { int t = func(a); if(t==1) for(int i=0;i<ans.size();i++) printf("%d",ans[i]); else printf("-1"); } }