void main(){
  import std.stdio, std.string, std.conv, std.algorithm;
  import std.exception, std.random;

  long a, b; rd(a, b);
  // auto rnd=Random(unpredictableSeed);
  // long a=uniform(1, 100, rnd), b=uniform(1, 100, rnd);

  while(a>0 && b>0){
    if(a>=b*2){
      auto m=a/b;
      if(m&1) m--;
      enforce(m>=2);
      a-=b*m;
    }else if(a*2<=b){
      auto m=b/a;
      if(m&1) m--;
      enforce(m>=2);
      b-=a*m;
    }else{
      break;
    }
  }
  
  writeln(a, " ", b);
  // f(a, b);
}

void f(long a, long b){
  import std.stdio;
  while(a>0 && b>0){
    if(a>=b*2) a-=b*2;
    else if(a*2<=b) b-=a*2;
    else break;
  }
  writeln(a, " ", b);
}

void rd(T...)(ref T x){
  import std.stdio, std.string, std.conv;
  auto l=readln.split;
  assert(l.length==x.length);
  foreach(i, ref e; x){
    e=l[i].to!(typeof(e));
  }
}