#include<iostream> #include<vector> #include<string> #include<array> #include<algorithm> #include<list> #include<cmath> #include<iomanip> #include<queue> #include<functional> #include<climits> #include<iterator> #include<unordered_set> #include<unordered_map> #include<map> #include<stack> #include<set> using namespace std; const double pi=4*atan(1.0); constexpr long long mod=static_cast<long long>(1e9+7); using cWeightEdges=vector<vector<pair<int,int>>>; using cEdges=vector<vector<int>>; long long gcd(long long a,long long b){ if(a < b)swap(a,b); if(b < 1) return -1; if(a % b == 0) return b; return gcd(b,a % b); } int main(){ long long A,B; cin>>A>>B; long long C=A+B; long long gcd_a=gcd(A,C); C/=gcd_a; long long gcd_b=gcd(B,C); cout<<gcd_a*gcd_b<<endl; //system("pause"); return 0; }