//if a < b, it can swap their position.
int gcd(int a, int b){
a = abs(a); b = abs(b);
while(b != 0){
int t = a%b;
a = b;
b = t;
}
return a;
}
int gcd(int a, int b){
return (b==0) ? a : gcd(b,a%b);
}
//a * b = gcd(a,b) * lcm(a,b)
//divide before multiply avoid overflow,
int lcm(int a, int b){
return a / gcd(a,b) * b;
}