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.
import java.io.*;
import java.util.*;


public class n1{
    public static int f(int[] q){
        return lis(q,q.length)+lds(q,q.length);
    }
    static int lis(int arr[],int n){
        int lis[]=new int[n];
        int i,j,max=0;
        /* Initialize LIS values for all indexes */
        for(i=0;i<n;i++)
            lis[i]=1;
        /* Compute optimized LIS values in bottom up manner */
        for(i=1;i<n;i++)
            for(j=0;j<i;j++)
                if(arr[i]>arr[j]&&lis[i]<lis[j]+1) lis[i]=lis[j]+1;
        /* Pick maximum of all LIS values */
        for(i=0;i<n;i++)
            if(max<lis[i]) max=lis[i];
        return max;
    }
    static int lds(int arr[],int n){
        int lis[]=new int[n];
        int i,j,max=0;
        /* Initialize LIS values for all indexes */
        for(i=0;i<n;i++)
            lis[i]=1;
        /* Compute optimized LIS values in bottom up manner */
        for(i=1;i<n;i++)
            for(j=0;j<i;j++)
                if(arr[i]<arr[j]&&lis[i]<lis[j]+1) lis[i]=lis[j]+1;
        /* Pick maximum of all LIS values */
        for(i=0;i<n;i++)
            if(max<lis[i]) max=lis[i];
        return max;
    }
    public static void main(String[] args) throws Exception{
        BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out=new PrintWriter(System.out);
        int n=Integer.parseInt(in.readLine());
        int sqrt=(int)Math.floor(Math.sqrt(n));
        int[]q=new int[n];
        for(int i=0;i<n;i++) {
            q[i]=i;
        }
        int i=n-1;
        for(;i>=sqrt-1;i-=sqrt) {
            //System.out.println(Arrays.toString(q));
            for(int j=0;j*2<sqrt;j++) {
                int t=q[i-j];
                int t2=q[i-sqrt+j+1];
                q[i-j]=t2;
                q[i+j+1-sqrt]=t;
            }
        }
        for(int ii=0;2*ii<i;ii++) {
            int t=q[ii];
            int t2=q[i-ii];
            q[ii]=t2;
            q[i-ii]=t;
        }
        for(int ii:q) {
            out.print(1+ii+" ");
        }
        out.println();
        out.close();
    }
}