#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1010
#define CIF 1000010
int att[CIF],N[MAX],two[CIF],nm1[MAX],nm2[MAX],auxi[MAX];
void copy(int A[],int b){
A[0]=1;
A[1]=b;
}
void print(int A[]){
int i;
for (i=A[0];i>=1;--i)
printf("%d",A[i]);
printf("\n");
}
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 cp(int A[],int B[],int c){
int i;
int AUX[MAX];
A[0]=B[0];
for (i=1;i<=B[0];++i)
A[i]=B[i];
copy(AUX,c);
//print(A);
//print(AUX);
sub(A,AUX);
//print(A);
}
void mul1(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 mul2(int A[], int B[]){
int i, j, t, C[MAX];
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));
}
int unu (int A[]){
if (A[0]==1 && A[1]==1){
printf("2\n");
return 1;
}
return 0;
}
int main(){
char s[MAX];
int i,x;
freopen("sarpe.in","r",stdin);
freopen("sarpe.out","w",stdout);
gets(s);
x=strlen(s);
for (i=x-1;i>=0;--i)
N[++N[0]]=s[i]-'0';
if (unu(N))
exit(0);
//print(N);
//copy(att,4);
cp(nm1,N,1);
cp(nm2,N,2);
copy(two,2);
mul2(two,nm1);
mul2(two,nm2);
//print(two);
copy(att,1);
mul2(att,N);
copy(auxi,4);
mul2(att,auxi);
add(att,two);
print(att);
//print(nm1);
//print(nm2);
/*fclose(stdin);
int n;
freopen("sarpe.in","r",stdin);
scanf("%d",&n);
printf("%lld",(long long)4*n+(long long )2*(n-1)*(n-2));
*/
exit(0);
}