#include #include #include #include using namespace std; const int P=50005; struct Data { int a,b,s,f; Data() { } Data(int _a,int _b,int _s,int _f):a(_a),b(_b),s(_s),f(_f) { } }; inline bool operator<(const Data &a,const Data &b) { return a.s+a.f>b.s+b.f; } priority_queue Q; set vis; int n; Data u; inline int gcd(int a,int b) { return b?gcd(b,a%b):a; } inline void Ext(int a,int b) { if(a==0&&b==0) return; if(a170) return; if(a>2*n) return; if(b==0&&a>n) return; if(n%gcd(a,b)) return; if(vis.find(a*P+b)!=vis.end()) return; int h=0,t=a; while(t