Mrs. Smith is trying to contact her husband, John Smith, but she forgot the secret phone number!

The only thing Mrs. Smith remembered was that any permutation of n can be a secret phone number. Only those permutations that minimize secret value might be the phone of her husband.

The sequence of n integers is called a permutation if it contains all integers from 1 to n exactly once.

The secret value of a phone number is defined as the sum of the length of the longest increasing subsequence (LIS) and length of the longest decreasing subsequence (LDS). 

A subsequence a_{i_1}, a_{i_2}, …, a_{i_k} where 1≤ i_1 < i_2 < … < i_k≤ n is called increasing if a_{i_1} < a_{i_2} < a_{i_3} < … < a_{i_k}. If a_{i_1} > a_{i_2} > a_{i_3} > … > a_{i_k}, a subsequence is called decreasing. An increasing/decreasing subsequence is called longest if it has maximum length among all increasing/decreasing subsequences.

For example, if there is a permutation [6, 4, 1, 7, 2, 3, 5], LIS of this permutation will be [1, 2, 3, 5], so the length of LIS is equal to 4. LDS can be [6, 4, 1], [6, 4, 2], or [6, 4, 3], so the length of LDS is 3.

Note, the lengths of LIS and LDS can be different.

So please help Mrs. Smith to find a permutation that gives a minimum sum of lengths of LIS and LDS.

Input

The only line contains one integer n (1 ≤ n ≤ 10^5) — the length of permutation that you need to build.

Output

Print a permutation that gives a minimum sum of lengths of LIS and LDS. 

If there are multiple answers, print any.

Examples

Input

4


Output

3 4 1 2


Input

2


Output

2 1

Note

In the first sample, you can build a permutation [3, 4, 1, 2]. LIS is [3, 4] (or [1, 2]), so the length of LIS is equal to 2. LDS can be ony of [3, 1], [4, 2], [3, 2], or [4, 1]. The length of LDS is also equal to 2. The sum is equal to 4. Note that [3, 4, 1, 2] is not the only permutation that is valid.

In the second sample, you can build a permutation [2, 1]. LIS is [1] (or [2]), so the length of LIS is equal to 1. LDS is [2, 1], so the length of LDS is equal to 2. The sum is equal to 3. Note that permutation [1, 2] is also valid.
#include <bits/stdc++.h>
using namespace std;
bool test0(long long n, const vector<long long>& p, long long& m1,
           long long& m2) {
  long long xp = (n + 1) / 2 + 2;
  vector<long long> dp1(n), dp2(n);
  for (long long i = 0; i < n; i++) {
    dp1[i] = 1, dp2[i] = 1;
    for (long long j = 0; j < i; j++) {
      if (p[j] < p[i])
        dp1[i] = max(dp1[i], dp1[j] + 1), m1 = max(m1, dp1[i]);
      else
        dp2[i] = max(dp2[i], dp2[j] + 1), m2 = max(m2, dp2[i]);
    }
  }
  return m1 + m2 < xp;
}
void test() {
  for (long long i = 10; i >= 2; i--) {
    vector<long long> p(i);
    iota(p.begin(), p.end(), 0);
    do {
      long long m1 = 1, m2 = 1;
      if (test0(i, p, m1, m2)) {
        cout << i << " " << m1 << " " << m2 << endl;
        for (long long x : p) cout << x << " ";
        cout << endl;
        exit(1);
      }
    } while (next_permutation(p.begin(), p.end()));
  }
}
int32_t main() {
  long long n;
  cin >> n;
  vector<long long> res(n);
  long long step = 1;
  for (long long& i = step; i * i <= n; i++)
    ;
  step--;
  for (long long i = 0; i < n; i += step) {
    long long nd = min(i + step, n);
    for (long long j = 0; j < step; j++) {
      if (i + j >= n) continue;
      res[i + j] = nd - j;
    }
  }
  for (long long x : res) cout << x << " ";
  cout << endl;
}
