long gcd1(int a, int b)
{
if (a % d == 0)
return b;
return gcd(b, a % b);
}
long gcd2(int a, int b)
{
for (int temp; b; a = b, b = temp)
temp = a % b;
return a;
}
int gcd3(int a, int b)
{
stack<int> x;
x.push(a);
x.push(b);
while (1)
{
int y = x.front();
x.pop();
int z = x.front();
x.pop();
if (z % y == 0)
return y;
x.push(y);
y.push(z % y);
}
}