#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
long long MD = 1000000007;
long double binpow(long double a, long long n) {
  if (n == 0) return 1;
  if (n % 2 == 1)
    return (binpow(a, n - 1) * a);
  else {
    long double b = (binpow(a, n / 2));
    return (b * b);
  }
}
const long long INF = 1e18;
map<long long, long long> used;
vector<long long> ab;
vector<long long> cb;
long long a[2000000];
pair<long long, long long> t[4000000];
long long c[2000000];
long double k, x, y;
long long loop = 1;
long long push[4000000];
void doPush(long long v, long long tl, long long tr) {
  if (push[v] != -1) {
    if (tl != tr) {
      push[v * 2] = push[v];
      push[v * 2 + 1] = push[v];
    }
    t[v].first = push[v];
    t[v].second = tl;
    push[v] = -1;
  }
}
void build(long long v, long long tl, long long tr) {
  if (tl == tr) {
    t[v].first = a[tl];
    t[v].second = tl;
    return;
  }
  long long tm = (tl + tr) / 2;
  build(v * 2, tl, tm);
  build(v * 2 + 1, tm + 1, tr);
  t[v] = min(t[v * 2], t[v * 2 + 1]);
}
pair<long long, long long> get(long long v, long long tl, long long tr,
                               long long l, long long r) {
  doPush(v, tl, tr);
  if (l > r) return {INF, INF};
  if (tl == l && tr == r) {
    return t[v];
  }
  long long tm = (tl + tr) / 2;
  return min(get(v * 2, tl, tm, l, min(r, tm)),
             get(v * 2 + 1, tm + 1, tr, max(tm + 1, l), r));
}
void update(long long v, long long tl, long long tr, long long l, long long r,
            long long val) {
  doPush(v, tl, tr);
  if (l > r) return;
  if (tl == l && tr == r) {
    push[v] = val;
    doPush(v, tl, tr);
    return;
  }
  long long tm = (tl + tr) / 2;
  update(v * 2, tl, tm, l, min(tm, r), val);
  update(v * 2 + 1, tm + 1, tr, max(tm + 1, l), r, val);
  t[v] = min(t[v * 2], t[v * 2 + 1]);
}
char st[105][105];
long long dp[100001];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  dp[1] = 1;
  dp[2] = 5;
  for (long long i = 3; i <= n; i++) {
    dp[i] = dp[i - 1] + (i - 1) * 4;
  }
  cout << dp[n];
}

### Prompt

Generate a cpp solution to the following problem:

While playing with geometric figures Alex has accidentally invented a concept of a n-th order rhombus in a cell grid.

A 1-st order rhombus is just a square 1 × 1 (i.e just a cell).

A n-th order rhombus for all n ≥ 2 one obtains from a n-1-th order rhombus adding all cells which have a common side with it to it (look at the picture to understand it better).

<image>

Alex asks you to compute the number of cells in a n-th order rhombus.

Input

The first and only input line contains integer n (1 ≤ n ≤ 100) — order of a rhombus whose numbers of cells should be computed.

Output

Print exactly one integer — the number of cells in a n-th order rhombus.

Examples

Input


1


Output


1

Input


2


Output


5

Input


3


Output


13

Note

Images of rhombus corresponding to the examples are given in the statement.

### Response

```cpp
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
long long MD = 1000000007;
long double binpow(long double a, long long n) {
  if (n == 0) return 1;
  if (n % 2 == 1)
    return (binpow(a, n - 1) * a);
  else {
    long double b = (binpow(a, n / 2));
    return (b * b);
  }
}
const long long INF = 1e18;
map<long long, long long> used;
vector<long long> ab;
vector<long long> cb;
long long a[2000000];
pair<long long, long long> t[4000000];
long long c[2000000];
long double k, x, y;
long long loop = 1;
long long push[4000000];
void doPush(long long v, long long tl, long long tr) {
  if (push[v] != -1) {
    if (tl != tr) {
      push[v * 2] = push[v];
      push[v * 2 + 1] = push[v];
    }
    t[v].first = push[v];
    t[v].second = tl;
    push[v] = -1;
  }
}
void build(long long v, long long tl, long long tr) {
  if (tl == tr) {
    t[v].first = a[tl];
    t[v].second = tl;
    return;
  }
  long long tm = (tl + tr) / 2;
  build(v * 2, tl, tm);
  build(v * 2 + 1, tm + 1, tr);
  t[v] = min(t[v * 2], t[v * 2 + 1]);
}
pair<long long, long long> get(long long v, long long tl, long long tr,
                               long long l, long long r) {
  doPush(v, tl, tr);
  if (l > r) return {INF, INF};
  if (tl == l && tr == r) {
    return t[v];
  }
  long long tm = (tl + tr) / 2;
  return min(get(v * 2, tl, tm, l, min(r, tm)),
             get(v * 2 + 1, tm + 1, tr, max(tm + 1, l), r));
}
void update(long long v, long long tl, long long tr, long long l, long long r,
            long long val) {
  doPush(v, tl, tr);
  if (l > r) return;
  if (tl == l && tr == r) {
    push[v] = val;
    doPush(v, tl, tr);
    return;
  }
  long long tm = (tl + tr) / 2;
  update(v * 2, tl, tm, l, min(tm, r), val);
  update(v * 2 + 1, tm + 1, tr, max(tm + 1, l), r, val);
  t[v] = min(t[v * 2], t[v * 2 + 1]);
}
char st[105][105];
long long dp[100001];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  dp[1] = 1;
  dp[2] = 5;
  for (long long i = 3; i <= n; i++) {
    dp[i] = dp[i - 1] + (i - 1) * 4;
  }
  cout << dp[n];
}

```