#pragma GCC optimize("Ofast,unroll-loops")
#include <climits>
#include <unordered_map>
#include <random>
#include <chrono>
#include <numeric>
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <queue>
#include <deque>
#include <stack>
#include <functional>
#include <bitset>
#include <string>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <cassert>
#include <list>
#include <forward_list>
#include <set>
#include <unordered_set>
#include <cstdint>
#include <utility>
#pragma GCC target("avx2,fma")
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
#define all(x) begin(x), end(x)
#define X first
#define Y second
#define isz(x) ((int)size(x))
const int MOD = 2025;
void solve() {
ll l, r;
cin >> l >> r;
if (r - l < MOD) {
pair<ll, ll> ans = {l, r};
for (ll i = l; i < r; ++i) {
for (ll j = i + 1; j <= r; ++j) {
if (ans.X % MOD * (ans.Y % MOD) % MOD > i % MOD * (j % MOD) % MOD) {
ans = {i, j};
}
}
}
cout << ans.X << ' ' << ans.Y << '\n';
} else {
while (l % MOD) ++l;
cout << l << ' ' << r << '\n';
}
}
signed main() {
cin.tie(0)->sync_with_stdio(0);
#ifdef LOCAL
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
int t = 1;
// cin >> t;
while (t --> 0) solve();
return 0;
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0LHVucm9sbC1sb29wcyIpCiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHJhbmRvbT4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8Zm9yd2FyZF9saXN0PgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KI2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDx1dGlsaXR5PgojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsZm1hIikKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKdXNpbmcgbGQgPSBsb25nIGRvdWJsZTsKdXNpbmcgdWxsID0gdW5zaWduZWQgbG9uZyBsb25nOwoKI2RlZmluZSBhbGwoeCkgYmVnaW4oeCksIGVuZCh4KQojZGVmaW5lIFggZmlyc3QKI2RlZmluZSBZIHNlY29uZAojZGVmaW5lIGlzeih4KSAoKGludClzaXplKHgpKQoKY29uc3QgaW50IE1PRCA9IDIwMjU7Cgp2b2lkIHNvbHZlKCkgewogIGxsIGwsIHI7CiAgY2luID4+IGwgPj4gcjsKICBpZiAociAtIGwgPCBNT0QpIHsKICAgIHBhaXI8bGwsIGxsPiBhbnMgPSB7bCwgcn07CiAgICBmb3IgKGxsIGkgPSBsOyBpIDwgcjsgKytpKSB7CiAgICAgIGZvciAobGwgaiA9IGkgKyAxOyBqIDw9IHI7ICsraikgewogICAgICAgIGlmIChhbnMuWCAlIE1PRCAqIChhbnMuWSAlIE1PRCkgJSBNT0QgPiBpICUgTU9EICogKGogJSBNT0QpICUgTU9EKSB7CiAgICAgICAgICBhbnMgPSB7aSwgan07CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGFucy5YIDw8ICcgJyA8PCBhbnMuWSA8PCAnXG4nOwogIH0gZWxzZSB7CiAgICB3aGlsZSAobCAlIE1PRCkgKytsOwogICAgY291dCA8PCBsIDw8ICcgJyA8PCByIDw8ICdcbic7CiAgfQp9CgpzaWduZWQgbWFpbigpIHsKICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CiAgI2lmZGVmIExPQ0FMCiAgICBmcmVvcGVuKCJpbi50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgI2VuZGlmCiAgaW50IHQgPSAxOwogIC8vIGNpbiA+PiB0OwogIHdoaWxlICh0IC0tPiAwKSBzb2x2ZSgpOwogIHJldHVybiAwOwp9