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

public class A {
	
	final static boolean debug=false;
	
	public static void main(String[] args) {
		FastScanner fs=new FastScanner();
		/*int n=fs.nextInt();
		int[] a=new int[n];
		for (int i=0; i<n; i++) for (int j=0; j<4; j++) a[i]+=fs.nextInt();
		int target=a[0];
		Arrays.sort(a);
		int index=0;
		for (int i=0; i<n; i++)
			if (a[i]==target) index=i;
		System.out.println(n-index);*/
		/*int n=fs.nextInt();
		char[] a=fs.next().toCharArray();
		char[] b=fs.next().toCharArray();
		long oo=0, zz=0, oz=0, zo=0;
		for (int i=0; i<n; i++) {
			if (a[i]=='0') {
				if (b[i]=='0')
					zz++;
				else
					zo++;
			}
			else {
				if (b[i]=='0')
					oz++;
				else 
					oo++;
			}
		}
		System.out.println(oo*zz+oz*zz+oz*zo); */
		//lis:longestSectionLen
		//lds:numSections
		int n=fs.nextInt();
		int numSections=1;
		int bestScore=n+1;
		for (int s=1; s<n; s++) {
			int newScore=s+(n+s-1)/s;
			if (newScore<bestScore) {
				bestScore=newScore;
				numSections=s;
			}
		}
		int sectionSize=(n+numSections-1)/numSections;
		int[] a=new int[n];
		int next=0;
		Arrays.fill(a, -1);
		for (int i=numSections-1; i>=0; i--) {
			for (int j=sectionSize*i; j<n&&a[j]==-1; j++) {
				a[j]=next++;
			}
		}
		
		
		for (int i=0; i<n; i++) System.out.print((a[i]+1)+" ");
		System.out.println();
		
	}
	
	private static class FastScanner {
		BufferedReader br;
		StringTokenizer st;
		public FastScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}
		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}
		int nextInt() {
			return Integer.parseInt(next());
		}
		long nextLong() {
			return Long.parseLong(next());
		}
		double nextDouble() {
			return Double.parseDouble(next());
		}
		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}
		int[] readArray(int n) {
			int[] a=new int[n];
			for (int i=0; i<n; i++)
				a[i]=nextInt();
			return a;
		}
		long[] readLongArray(int n) {
			long[] a=new long[n];
			for (int i=0; i<n; i++)
				a[i]=nextLong();
			return a;
		}
	}
}