//[a,b)
#include <iostream>
using namespace std;
typedef long long ll;
#define N 100000
bool is_prime[N];
bool is_small_prime[N];
void segment_sieve(ll a,ll b)
{
for (int i = 0; (ll)i * i < b; i ++) {
is_small_prime[i] = true;
}
for (int i = 0; i < b - a; i ++) {//i -> i + a
is_prime[i] = true;
}
for (int i = 2; (ll)i * i < b; i ++) {//仅筛到根号b
if (is_small_prime[i]) {
for (int j = i * i; j < b; j += i) {
is_small_prime[j] = false;
}
for (int j = (a / i - 1) * i; j < b; j += i) {//筛[a,b)中质数
if (j >= a) {
is_prime[j - a] = false;
}
}
}
}
}
int main()
{
int a,b;
cin >> a >> b;
segment_sieve(a, b);
for (int i = a; i < b; i ++) {
cout << i << endl;
}
return 0;
}