#include <bits/stdc++.h>
using namespace std;

typedef vector<int> vi;
typedef priority_queue<int> maxHeap;
typedef priority_queue<int, vector<int>, greater<int>> minHeap;
#define inputArray(a, n) \
    for (int i = 0; i < n; i++) cin >> a[i];
#define printArray(a, n) \
    for (int i = 0; i < n; i++) cout << a[i] << endl;
typedef pair<int, int> pii;
#define endl "\n"
#define PB push_back
#define MP make_pair
#define FF first
#define SS second
#define int long long
#define MOD 1000000007
#define PI 3.1415926535897932384626433832795
#define clr(val, val1) memset(val, val1, sizeof(val))
#define what_is(x) cerr << #x << " is " << x << endl;
#define OnlineJudge                   \
    freopen("input.txt", "r", stdin); \
    freopen("output.txt", "w", stdout);
#define FastIO                        \
    ios_base::sync_with_stdio(false); \
    cin.tie(NULL);                    \
    cout.tie(NULL);

void additionals() {
    FastIO;
    OnlineJudge;
}
const int n = 100001;
bitset<n> x;
vector<int> primes;

void seive() {
    x.set();
    x[0] = x[1] = 0;
    // primes.clear();
    for (int i = 2; i * i <= n; i++) {
        if (x[i]) {
            int k = i * i;
            while (k <= n) {
                x[k] = 0;
                k += i;
            }
        }
    }

    for (int i = 0; i <= n; i++) {
        if (x[i]) primes.PB(i);
    }
}
int32_t main() {
    additionals();
    int a, b;
    cin >> a >> b;
    seive();
    int segment[b - a + 1];

    memset(segment, 1, sizeof(segment));

    for (auto i : primes) {
        if (i * i > b) break;

        int start = (a / i) * i;
        if (i >= a and i <= b) {
            start = i * 2;
        }
        
        for (int j = start; j <= n; j += i) {
            segment[j - a] = 0;
        }
    }
    cout << "Result:" << endl;
    for (int i = a; i <= b; i++) {
        if (segment[i - a]) cout << i << " ";
    }
    cout << endl;

    // for (auto i : primes) {
    //     cout << i << " ";
    // }

    return 0;
}