#pragma once
#include<cassert>
#include<functional>
#include<vector>namespacehaar_lib{template<typenameT,typenameFunc=std::minus<T>>std::vector<T>fast_mobius_transform_superset(std::vector<T>f,constFunc&op=std::minus<T>()){constintN=f.size();assert((N&(N-1))==0&&"N must be a power of 2");for(inti=1;i<N;i<<=1){for(intj=0;j<N;++j){if(not(j&i))f[j]=op(f[j],f[j^i]);}}returnf;}}// namespace haar_lib
#line 2 "Mylib/Convolution/fast_mobius_transform_superset.cpp"
#include<cassert>
#include<functional>
#include<vector>namespacehaar_lib{template<typenameT,typenameFunc=std::minus<T>>std::vector<T>fast_mobius_transform_superset(std::vector<T>f,constFunc&op=std::minus<T>()){constintN=f.size();assert((N&(N-1))==0&&"N must be a power of 2");for(inti=1;i<N;i<<=1){for(intj=0;j<N;++j){if(not(j&i))f[j]=op(f[j],f[j^i]);}}returnf;}}// namespace haar_lib