#pragma once
#include<vector>namespacehaar_lib{template<typenameT,typenamePoly>automultipoint_evaluation(Polya,std::vector<T>p){constintM=p.size();std::vector<T>ret(M);intk=1;while(k<M)k*=2;std::vector<Poly>f(k*2,{1});for(inti=0;i<M;++i)f[i+k]={-p[i],1};for(inti=k-1;i>=1;--i)f[i]=f[i<<1|0]*f[i<<1|1];f[1]=a%f[1];for(inti=2;i<k+M;++i)f[i]=f[i>>1]%f[i];for(inti=0;i<M;++i)ret[i]=f[k+i][0];returnret;}}// namespace haar_lib