// competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/enumerate_primes
#include "Math/enumerate_primes.hpp"
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long N, A, B;
cin >> N >> A >> B;
vector<long long> primes = enumerate_primes(N);
long long piN = primes.size();
vector<long long> ps;
for (int i = B; i < piN; i += A)
{
ps.push_back(primes[i]);
}
long long X = ps.size();
cout << piN << " " << X << endl;
for (long long p : ps)
{
cout << p << " ";
}
cout << endl;
return 0;
}
#line 1 "test/Math/enumerate_primes/yosupo-enumerate_primes.test.cpp"
// competitive-verifier: PROBLEM https://judge.yosupo.jp/problem/enumerate_primes
#line 1 "Math/enumerate_primes.hpp"
#include <bits/stdc++.h>
using namespace std;
vector<long long> enumerate_primes(long long n)
{
assert(0 < n);
vector<long long> primes;
vector<bool> isChecked(n + 1, false);
isChecked[0] = isChecked[1] = true;
for (long long i = 2; i <= n; i++)
{
if (isChecked[i])
{
continue;
}
primes.push_back(i);
isChecked[i] = true;
for (long long j = i * i; j <= n; j += i)
{
if (!isChecked[j])
{
isChecked[j] = true;
}
}
}
return primes;
}
#line 5 "test/Math/enumerate_primes/yosupo-enumerate_primes.test.cpp"
using namespace std;
int main()
{
long long N, A, B;
cin >> N >> A >> B;
vector<long long> primes = enumerate_primes(N);
long long piN = primes.size();
vector<long long> ps;
for (int i = B; i < piN; i += A)
{
ps.push_back(primes[i]);
}
long long X = ps.size();
cout << piN << " " << X << endl;
for (long long p : ps)
{
cout << p << " ";
}
cout << endl;
return 0;
}