#include<bits/stdc++.h>
using namespace std;
#define LEN 1000005
int base =10;
int power[LEN];
void init()
{
power[0]=1;
for(int i=1;i<LEN;i++) power[i]=power[i-1]*base;
}
void prefixHash(string s,vector<int> &ph)
{
int sum=0;
for(int i=0;i<s.size();i++)
{
sum*=base;
sum+=(s[i]-'0');
ph[i]=sum;
}
cout<<sum<<endl;
for(auto x:ph)cout<<x<<" ";
cout<<endl;
}
int calcHash(int l,int r,string s,vector<int> &ph)
{
if(l==0) return ph[r];
return ph[r]-ph[l-1]*pow(base,r-l+1);
}
int main()
{
string s="101245";
int n=s.size();
vector<int>ph(n);
int l=0,r=3;
calcHash(l,r,s,ph);
prefixHash(s,ph);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBMRU4gMTAwMDAwNQppbnQgYmFzZSA9MTA7CgppbnQgcG93ZXJbTEVOXTsKCnZvaWQgaW5pdCgpCnsKICAgIHBvd2VyWzBdPTE7CiAgICBmb3IoaW50IGk9MTtpPExFTjtpKyspIHBvd2VyW2ldPXBvd2VyW2ktMV0qYmFzZTsKfQp2b2lkIHByZWZpeEhhc2goc3RyaW5nIHMsdmVjdG9yPGludD4gJnBoKQp7CgogICAgaW50IHN1bT0wOwogICAgZm9yKGludCBpPTA7aTxzLnNpemUoKTtpKyspCiAgICB7CiAgICAgICAgc3VtKj1iYXNlOwogICAgICAgIHN1bSs9KHNbaV0tJzAnKTsKICAgICAgICBwaFtpXT1zdW07CiAgICB9CiAgICBjb3V0PDxzdW08PGVuZGw7CiAgICBmb3IoYXV0byB4OnBoKWNvdXQ8PHg8PCIgIjsKICAgIGNvdXQ8PGVuZGw7Cgp9CmludCBjYWxjSGFzaChpbnQgbCxpbnQgcixzdHJpbmcgcyx2ZWN0b3I8aW50PiAmcGgpCnsKICAgIGlmKGw9PTApIHJldHVybiBwaFtyXTsKICAgcmV0dXJuIHBoW3JdLXBoW2wtMV0qcG93KGJhc2Usci1sKzEpOwp9CmludCBtYWluKCkKewoKICAgIHN0cmluZyBzPSIxMDEyNDUiOwogICAgICAgIGludCBuPXMuc2l6ZSgpOwogICAgdmVjdG9yPGludD5waChuKTsKCiAgICBpbnQgbD0wLHI9MzsKICAgIGNhbGNIYXNoKGwscixzLHBoKTsKICAgIHByZWZpeEhhc2gocyxwaCk7Cn0K