#include <stdio.h>
#include <string.h>
#define NR_CIFRE 10000
// 4N + 2(N-1)(N-2)
void reset(int A[],int l)
{
int i;
for (i=0; i<=l; i++)
A[i]=0;
}
void transform(int A[], int B)
{
do
{
A[++A[0]]=B%10;
B/=10;
}
while (B);
}
void copyV(int A[], int B[])
{
int i = 0;
for (i=0; i<=B[0]; i++)
A[i]=B[i];
}
void sub(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void mulm(int A[], int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void mulM(int A[], int B[])
{
int i, j, t, C[NR_CIFRE];
memset(C, 0, sizeof(C));
for (i = 1; i <= A[0]; i++)
{
for (t=0, j=1; j <= B[0] || t; j++, t/=10)
C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
if (i + j - 2 > C[0]) C[0] = i + j - 2;
}
memcpy(A, C, sizeof(C));
}
void invert(int A[])
{
int i,t;
for (i=1; i<=A[0]/2; i++)
{
t=A[i];
A[i]=A[A[0]-i+1];
A[A[0]-i+1]=t;
}
}
int main()
{
int e,i;
char c;
int A[NR_CIFRE],B[NR_CIFRE],A1[NR_CIFRE],A2[NR_CIFRE];
FILE *in=fopen("sarpe.in","r");
FILE *out=fopen("sarpe.out","w");
reset(A,NR_CIFRE-1);
reset(A1,NR_CIFRE-1);
reset(A2,NR_CIFRE-1);
reset(B,NR_CIFRE-1);
e=fscanf(in,"%c",&c);
while (c>='0' && c<='9')
{
A[0]++;
A[A[0]]=c-'0';
e=fscanf(in,"%c",&c);
}
invert(A);
if (A[0]>1 || A[1]!=1)
{
B[0]=1;
B[1]=1;
copyV(A1,A);
copyV(A2,A);
sub(A1,B);
B[1]=2;
sub(A2,B);
mulM(A1,A2);
mulm(A1,2);
mulm(A,4);
add(A,A1);
}
else
A[1]=2;
for (i=A[0]; i>=1; i--)
fprintf(out,"%d",A[i]);
fprintf(out,"\n");
fclose(in);
fclose(out);
return 0;
}