// reference: https://qiita.com/keymoon/items/11fac5627672a6d6a9f6#pragma once
#include"library/mod/Modint61.hpp"
#include"library/sequence/ForString.hpp"#include<random>
#include<vector>std::random_devicerollonghash_rnd;std::mt19937rollonghash_mt(rollonghash_rnd());template<typenameCHAR=char,typenameMINT=Modint61>classRollingHash{usingll=longlong;staticconstexprllmod=(1LL<<61)-1;// using T = conditional_t< less<ll>(mod,ll(// std::numeric_limits<int>::max())), int, ll>;usingT=ll;inlinestaticconstMINTbase=MINT::raw(rollonghash_mt()%(mod-2)+2);intn;std::vector<MINT>hash;public:staticstd::vector<MINT>power;RollingHash()=default;RollingHash(conststd::vector<CHAR>&v):n(v.size()),hash(n+1,0){if(!power.size())power.push_back(1);for(inti=0;i<n;i++)hash[i+1]=nxt_hash(hash[i],v[i]);if(power.size()<=n){intsz=std::max(int(2*power.size()),n+1);power.reserve(sz);while(power.size()<sz)power.push_back(power.back()*base);}}staticMINTnxt_hash(MINTx,CHARc){return(x*base)+MINT::raw(c);}Tget_hash(intl=0,intr=-1){if(r<0)r=n;return(hash[r]-hash[l]*power[r-l]).v;}staticTfull_hash(conststd::vector<CHAR>&v){MINTres=0;for(constchar&c:v)res=nxt_hash(res,c);returnres.v;}};
Traceback(mostrecentcalllast):File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/documentation/build.py",line71,in_render_source_code_statbundled_code=language.bundle(stat.path,basedir=basedir,options={'include_paths':[basedir]}).decode()~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus.py",line187,inbundlebundler.update(path)~~~~~~~~~~~~~~^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line312,inupdateraiseBundleErrorAt(path,i+1,"#pragma once found in a non-first line")onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt:library/sequence/RollingHash.hpp:line2:#pragmaoncefoundinanon-firstline