#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1<<29) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define uniq(v) v.erase(unique(all(v)),v.end()) #define indexOf(v,x) (find(all(v),x)-v.begin()) //エラトステネスの篩 O(n loglog n) #define MAX_N 5000000 int prime[MAX_N];//i番目の素数 bool is_prime[MAX_N+1]; int sieve(int n){ int p=0; memset(is_prime,true,sizeof(is_prime)); is_prime[0]=is_prime[1]=false; for(int i=2;i<=n;i++){ if(is_prime[i]){ prime[p++]=i; for(int j=2*i;j<=n;j+=i)is_prime[j]=false; } } return p; } int main(){ int np=sieve(MAX_N); int n; bool a[10]={}; cin>>n; rep(i,n){ int m; cin>>m; a[m]=true; } int ans=-1; vector idx; idx.push_back(-1); rep(i,np){ bool ng=false; int m=prime[i]; while(m){ if(!a[m%10])ng=true; m/=10; } if(ng)idx.push_back(i); } idx.push_back(np); rep(i,idx.size()-1){ bool used[10]={}; int cnt=0; for(int j=idx[i]+1;j