#include<bits/stdc++.h>typedeflonglong ll;#define rg register
template <typename T>inlinevoidread(T&x){char cu=getchar();x=0;bool fla=0;while(!isdigit(cu)){if(cu=='-')fla=1;cu=getchar();}while(isdigit(cu))x=x*10+cu-'0',cu=getchar();if(fla)x=-x;}
template <typename T>inlinevoidprinte(const T x){if(x>=10)printe(x/10);putchar(x%10+'0');}
template <typename T>inlinevoidprint(const T x){if(x<0)putchar('-'),printe(-x);elseprinte(x);}
template <typename T>inline T min(const T a,const T b){return a<b?a:b;}
template <typename T>inline T max(const T a,const T b){return a>b?a:b;}int n,m,q;int las[200005],nxt[200005],a[200005],b[200005],f[200005][19],ml[200005];intmain(){read(n),read(m),read(q);for(rg int i=1;i<=n;i++)read(a[i]);for(rg int i=1;i<=m;i++)read(b[i]);for(rg int i=1;i<n;i++)nxt[a[i]]=a[i+1];nxt[a[n]]=a[1];for(rg int i=1;i<=n;i++)las[i]=m+1;for(rg int j=0;j<=18;j++)f[m+1][j]=m+1;n--;ml[m+1]=m+1;for(rg int i=m;i>=1;i--){f[i][0]=las[nxt[b[i]]];las[b[i]]=i;for(rg int j=1;j<=18;j++)f[i][j]=f[f[i][j-1]][j-1];int tot=i;for(rg int j=0;j<=18;j++)if((1<<j)&n)tot=f[tot][j];ml[i]=min(ml[i+1],tot);}while(q--){int l,r;read(l),read(r);putchar((r>=ml[l])+'0');}return0;}
#include<bits/stdc++.h>typedeflonglong ll;#define rg register
template <typename T>inlinevoidread(T&x){char cu=getchar();x=0;bool fla=0;while(!isdigit(cu)){if(cu=='-')fla=1;cu=getchar();}while(isdigit(cu))x=x*10+cu-'0',cu=getchar();if(fla)x=-x;}
template <typename T>inlinevoidprinte(const T x){if(x>=10)printe(x/10);putchar(x%10+'0');}
template <typename T>inlinevoidprint(const T x){if(x<0)putchar('-'),printe(-x);elseprinte(x);}
template <typename T>inline T min(const T a,const T b){return a<b?a:b;}
template <typename T>inline T max(const T a,const T b){return a>b?a:b;}int n,top=1;struct Point
{ll x,y;bool operator <(const Point b)const{return x==b.x?y>b.y:x<b.x;}Point operator -(const Point b)const{return(Point){x-b.x,y-b.y};}}Q[100001];
ll Cross(Point a,Point b){return a.x*b.y-a.y*b.x;}intmain(){read(n);for(rg int i=1;i<=n;i++)read(Q[i].x),read(Q[i].y),Q[i].y-=Q[i].x*Q[i].x;std::sort(Q+1,Q+n+1);for(rg int i=2;i<=n;i++)if(Q[i].x!=Q[top].x){while(top>1&&Cross(Q[i]-Q[top-1],Q[top]-Q[top-1])<=0)top--;Q[++top]=Q[i];}print(top-1);return0;}
#include<bits/stdc++.h>typedeflonglong ll;#define rg register
template <typename T>inlinevoidread(T&x){char cu=getchar();x=0;bool fla=0;while(!isdigit(cu)){if(cu=='-')fla=1;cu=getchar();}while(isdigit(cu))x=x*10+cu-'0',cu=getchar();if(fla)x=-x;}
template <typename T>inlinevoidprinte(const T x){if(x>=10)printe(x/10);putchar(x%10+'0');}
template <typename T>inlinevoidprint(const T x){if(x<0)putchar('-'),printe(-x);elseprinte(x);}
template <typename T>inline T min(const T a,const T b){return a<b?a:b;}
template <typename T>inline T max(const T a,const T b){return a>b?a:b;}int n,mod=11;char s[100001];int f[100005][11];
ll ans;intmain(){scanf("%s",s+1),n=strlen(s+1);for(rg int i=n;i>=1;i--){constint d=s[i]-'0';for(rg int j=0;j<mod;j++){if(j>d)f[i][j]=1+f[i+1][(j*(j-1)/2+d+10)%mod];}if(s[i]>'0')ans+=f[i+1][s[i]-'0']+1;}print(ans);return0;}