/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int gcd(int a, int b)
{
return b != 0 ? gcd(b, a % b) : a;
}
public static int gcd_binary
(int u,
int v
) throws Exception {
if(u < 0 || v < 0)
{
throw new IOException("Invalid Input Value, params couldn't be less than zero"); }
if(u == v)
return v;
if(u == 0)
return v;
if(v == 0)
return u;
if((~u & 1) == 1) {
if((v & 1) == 1) {
return gcd(u >> 1, v);
}
else
return gcd(u >> 1, v >> 1) << 1;
}
if( (~v & 1) == 1)
return gcd(u, v >> 1);
if(u > v)
return gcd((u - v) >> 1, v);
return gcd((v - u) >> 1, u);
}
{
// your code goes here
out.println(gcd_binary(16, 52));
out.flush();
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgaW50IGdjZChpbnQgYSwgaW50IGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGIgIT0gMCA/IGdjZChiLCBhICUgYikgOiBhOwogICAgfQogICAgcHVibGljIHN0YXRpYyBpbnQgZ2NkX2JpbmFyeShpbnQgdSwgaW50IHYpIHRocm93cyBFeGNlcHRpb24KICAgIHsKICAgICAgICBpZih1IDwgMCB8fCB2IDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCBJbnB1dCBWYWx1ZSwgcGFyYW1zIGNvdWxkbid0IGJlIGxlc3MgdGhhbiB6ZXJvIik7CiAgICAgICAgfQogICAgICAgIGlmKHUgPT0gdikKICAgICAgICAgICAgcmV0dXJuIHY7CgogICAgICAgIGlmKHUgPT0gMCkKICAgICAgICAgICAgcmV0dXJuIHY7CgogICAgICAgIGlmKHYgPT0gMCkKICAgICAgICAgICAgcmV0dXJuIHU7CgogICAgICAgIGlmKCh+dSAmIDEpID09IDEpIHsKICAgICAgICAgICAgaWYoKHYgJiAxKSA9PSAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ2NkKHUgPj4gMSwgdik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIGdjZCh1ID4+IDEsIHYgPj4gMSkgPDwgMTsKICAgICAgICB9CiAgICAgICAgaWYoICh+diAmIDEpID09IDEpCiAgICAgICAgICAgIHJldHVybiBnY2QodSwgdiA+PiAxKTsKCiAgICAgICAgaWYodSA+IHYpCiAgICAgICAgICAgIHJldHVybiBnY2QoKHUgLSB2KSA+PiAxLCB2KTsKCiAgICAgICAgcmV0dXJuIGdjZCgodiAtIHUpID4+IDEsIHUpOwogICAgfQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCVByaW50V3JpdGVyIG91dCA9IG5ldyBQcmludFdyaXRlcihTeXN0ZW0ub3V0KTsKICAgICAgICBvdXQucHJpbnRsbihnY2RfYmluYXJ5KDE2LCA1MikpOwogICAgICAgIG91dC5mbHVzaCgpOwoJfQp9