Consider some square matrix A with side n consisting of zeros and ones. There are n rows numbered from 1 to n from top to bottom and n columns numbered from 1 to n from left to right in this matrix. We'll denote the element of the matrix which is located at the intersection of the i-row and the j-th column as Ai, j.

Let's call matrix A clear if no two cells containing ones have a common side.

Let's call matrix A symmetrical if it matches the matrices formed from it by a horizontal and/or a vertical reflection. Formally, for each pair (i, j) (1 ≤ i, j ≤ n) both of the following conditions must be met: Ai, j = An - i + 1, j and Ai, j = Ai, n - j + 1.

Let's define the sharpness of matrix A as the number of ones in it.

Given integer x, your task is to find the smallest positive integer n such that there exists a clear symmetrical matrix A with side n and sharpness x.

Input

The only line contains a single integer x (1 ≤ x ≤ 100) — the required sharpness of the matrix.

Output

Print a single number — the sought value of n.

Examples

Input

4


Output

3


Input

9


Output

5

Note

The figure below shows the matrices that correspond to the samples:

<image>
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
const int inf = 1e9;
const int md = 1e9 + 7;
int a[205][205];
int m;
int get(int first, int second) {
  if (first < 0 || second < 0 || first >= m || second >= m) return 0;
  return a[first][second];
}
bool check(int first, int second) {
  if (get(first - 1, second) == 0 && get(first + 1, second) == 0 &&
      get(first, second - 1) == 0 && get(first, second + 1) == 0 &&
      get(first, second) == 0)
    return true;
  else
    return false;
}
bool check2(int first, int second) {
  if (get(first, second) == 1)
    if (get(first - 1, second) == 0 && get(first + 1, second) == 0 &&
        get(first, second - 1) == 0 && get(first, second + 1) == 0)
      return true;
    else
      return false;
  else
    return true;
}
int main() {
  int first;
  cin >> first;
  for (int n = 1; n <= 200; ++n) {
    m = n;
    memset(a, 0, sizeof(a));
    int col = 0;
    for (int i = 0; i < n; ++i)
      for (int j = 0; j < n; ++j) {
        if (check(i, j) && check(n - i - 1, j) && check(i, n - j - 1) &&
            check(n - i - 1, n - j - 1))
          a[i][j] = a[n - i - 1][j] = a[i][n - j - 1] =
              a[n - i - 1][n - j - 1] = 1;
        int tmp = 0;
        for (int i2 = 0; i2 < n; ++i2)
          for (int j2 = 0; j2 < n; ++j2) {
            if (!check2(i2, j2)) tmp = inf;
            tmp += a[i2][j2];
          }
        if (tmp > first)
          a[i][j] = a[n - i - 1][j] = a[i][n - j - 1] =
              a[n - i - 1][n - j - 1] = 0;
        else
          col = tmp;
      }
    if (col == first) {
      cout << n << endl;
      return 0;
    }
  }
  return 0;
}
