int gcd(int a, int b){
return (b==0) ? a : gcd(b,a%b);
}
int e_gcd(int a, int b, int& x, int& y){
if(b == 0){
x = 1;
y = 0;
return a;
}
int ans = e_gcd(b, a%b, y, x);
y -= x*(a/b);
return ans;
}
//index start from 1,x,y maybe negativebool n_equation(int a[], int x[], int c, int n){
vector<int> d(n+3);
d[1] = a[1];
for(int i = 2; i < n; ++i)
d[i] = gcd(a[i-1],a[i]);
if(c%d[n-1] != 0)
returnfalse;
int y,gcdd;
for(int i = n-1; i >= 1; --i){
gcdd = e_gcd(a[i+1],d[i],x[i+1],y);
x[i+1] *= c/gcdd;
y *= c/gcdd;
c = d[i] * y;
}
x[1] = y;
returntrue;
}