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

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
    int a, b;
    cin >> a >> b;
    int res = 1;
    for (int i = 1; i <= b; ++i) {
        if (b / i - (a - 1) / i >= 2) 
            res = i;
    }
    cout << res << "\n";
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for (int i=a;i<n;i++)//iをaからn
#define per(i,n,a) for (int i=a-1;i>=n;i--)//iをnからa
#define db(x) cout << #x << " = " << x << endl//デバッグ用
#define db2(x, y) cout << "(" << #x << ", " << #y << ") = (" << x << ", " << y << ")\n"; //デバッグ用
#define all(x) (x).begin(), (x).end()
#define INF32 2147483647 //2.147483647×10^{9}:32bit整数のinf
#define INF64 9223372036854775807 //9.223372036854775807×10^{18}:64bit整数のinf
#define MOD 998244353 //10^9+7:合同式の法
#define pb push_back
#define F first
#define S second
typedef long long ll;
//sort(all(a)); ソート
//sort(all(a),greater<int>()); 逆順ソート
//a.erase(unique(all(a)), a.end()); ソート後に重複を削除
//cout<< std::fixed << std::setprecision(15)<<0.000001<<endl; 小数点以下を表示させる
//vector<vector<int>> data(3, vector<int>(4)); int型の2次元配列(3×4要素の)の宣言


int main() {
    int a,b;
    cin>>a>>b;
    int ans=b-a;
    
    per(i,0,ans+1){
        //cout<<i<<" "<<a/i<<endl;
        //cout<<(((a+i-1)/i)+1)*i<<" "<<b<<endl;
        if((((a+i-1)/i)+1)*i<=b){
            cout<<i<<endl;
            return 0;
        }
    }
    return 0;
}
