private void rec(int as, int bs, int rets, int n){
            if(n<=SMALL){
                for(int i=0;i<2*n;++i) t[rets + i] = 0;
                for(int i=0;i<n;++i)
                    for(int j=0;j<n;++j) t[rets + i+j] += t[as + i] * t[bs + j];
                return;
            }
            int ar = as;
            int al = as + n/2;
            int br = bs;
            int bl = bs + n/2;
            int asum = rets + n*5;
            int bsum = rets + n*5 + n/2;
            int x1 = rets;
            int x2 = rets + n;
            int x3 = rets + n*2;
            for(int i=0;i<n/2;++i){
                t[asum + i] = t[al + i] + t[ar + i];
                t[bsum + i] = t[bl + i] + t[br + i];
            }
            rec(ar, br, x1, n / 2);
            rec(al, bl, x2, n / 2);
            rec(asum, bsum, x3, n / 2);
            for(int i=0;i<n;++i) t[x3 + i] -= t[x1 + i] + t[x2 + i];
            for(int i=0;i<n;++i) t[rets + i+n/2] += t[x3 + i];
        }