#include #include #include #include #include #include #include #include #include using namespace std; vector prime; vector p; //O(NloglogN) void erat(long long N){ prime.resize(N+1, 1); prime[0] = 0; prime[1] = 0; for (long long i=2; i*i<=N; i++){ if (prime[i]){ for (long long j=i*2; j <= N; j+=i){ prime[j] = 0; } } } } map mp; set st; void update(int X, int p){ set st2; while(X != 0){ st2.insert(X%10); X /= 10; } for (auto x : st2){ if (p == 1) mp[x]++; else mp[x]--; } } bool check1(){ for (int i=0; i<=9; i++){ if (!st.count(i) && mp[i] > 0) return 0; } return 1; } bool check2(){ for (int i=0; i<=9; i++){ if (!st.count(i) && mp[i] > 0 || (st.count(i) && mp[i] == 0)) return 0; } return 1; } int main(){ int N, M, A, l=0, a, b, ans=-1; cin >> N; erat(5000000); for (int i=1; i<=5000000; i++){ if (prime[i]) p.push_back(i); } for (int i=0; i> A; st.insert(A); } M = p.size(); for (int r=0; r