1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | #define I __int128 void exgcd(I a,I&x,I b,I&y,I c){      if(b==0) x=c/a,y=0;     else exgcd(b,y,a%b,x,c),y-=a/b*x; }
  inline bool merge(I x1,I p1,I x2,I p2,I&x,I&p){     I a,b,d=__gcd(p1,p2);     if((x2-x1)%d!=0) return false;     exgcd(p1,a,p2,b,x2-x1);     p=p1/d*p2;      x=((a*p1+x1)%p+p)%p;     return true; }
   |