#include<stdio.h>
#include<string.h>
char ns[1005];
long n,i,lll,lc,j,ll,q,x,aaa;
/*m*/int a[1000010],b[1000010],c[1000010],aa[1000010],bb[1000010];
void inmult(/*m*/int a[],/*m*/int x,/*m*/int lr)
{long i,t=0;
for(i=lr;i;--i)
{
b[i]=a[i]*x+t;
t=b[i]/10;
b[i]%=10;
}
while(t){b[0]=t%10;t/=10;
++lr;
for(i=lr;i;--i)b[i]=b[i-1];}
lll=lr;
}
void adunare(/*m*/int a[],/*m*/int n,/*m*/int b[],/*m*/int m)
{long t=0,i;
if(n>m)
{lc=n;
for(i=n;i;--i)
{
c[i]=a[i]+t;
t=0;
if(m-(n-i)>0)c[i]+=b[m-(n-i)];
if(c[i]>=10)t=c[i]/10;
if(i>1)c[i]%=10;
}}
else
{lc=m;
for(i=m;i;--i)
{
c[i]=b[i]+t;
t=0;
if(n-(m-i)>0)c[i]+=a[n-(m-i)];
if(c[i]>=10)t=c[i]/10;
if(i>1)c[i]%=10;
}}
if(t){c[0]=t;++lc;for(i=lc;i;--i)c[i]=c[i-1];}
}
void inmult2(/*m*/int l1,/*m*/int l2,/*m*/int a1[],/*m*/int a2[])
{long t;
memset(c,0,sizeof(c));
lc=0;
for(j=1;j<=l2;++j)
{
ll=l1;
t=0;
for(i=l1;i;--i)
{
aa[i]=a1[i]*a2[j]+t;
t=aa[i]/10;
aa[i]%=10;
}
while(t){aa[0]=t%10;t/=10;
++ll;
for(i=ll;i;--i)aa[i]=aa[i-1];}
for(i=ll+1;i<=ll+j-1;++i)
aa[i]=0;
ll+=l2-j;
adunare(c,lc,aa,ll);
}
}
int main()
{
freopen("sarpe.in","r",stdin);
freopen("sarpe.out","w",stdout);
gets(ns);
n=strlen(ns);
for(i=1;i<=n;++i)a[i]=((/*m*/int)ns[i-1])-48;
if(n==1&&a[1]==1){printf("2\n");return 0;}
inmult(a,4,n);
memcpy(bb,b,sizeof(b));
q=lll;
x=n;
while(!a[x]){a[x]=9;--x;}
a[x]-=1;
memcpy(b,a,sizeof(a));
x=n;
while(!a[x]){a[x]=9;--x;}
a[x]-=1;
inmult2(n,n,a,b);
inmult(c,2,lc);
adunare(bb,q,b,lll);
for(i=1;i<=lc;++i)printf("%u",c[i]);
return 0;
}