using cpx = complex; using vcpx = vector; void fft(vcpx &a, bool inv = false) { int n = a.size(), j = 0; assert((n&-n) == n); for(int i=1; i> 1); while(j >= bit) { j -= bit; bit >>= 1; } j += bit; if(i < j) swap(a[i], a[j]); } vcpx roots(n/2); prec c = 2 * pi * (inv ? -1 : 1); for(int i=0; i