/*
 *中国剩余定理:最小的x,x=a[i](mod m[i]) (1<=i<=k)
 */
ll China(ll *a, ll *m, int k) {
    ll M = 1, x, y, z, ret = 0;
    for (int i=1; i<=k; ++i) M *= m[i];
    for (int i=1; i<=k; ++i) {
        ll w = M / m[i];
        ex_GCD(w, m[i], x, y, z);
        ret = (ret + x*w*a[i]) % M;
    }
    return (ret + M) % M;
}
/*
    *中国剩余定理:最小的x,x=a[i](% m[i]) (i<=n)
*/
int China(int k, int *a, int *m) {
    ll M = 1, x, y, ret = 0;
    for (int i=1; i<=n; ++i) {
        M *= m[i];
    }
    for (int i=1; i<=n; ++i) {
        ll w = M / m[i];
        ex_GCD (w, m[i], x, y);
        ret = (ret + x * w * a[i]) % M;
    }
    return (ret + M) % M;
}