Problem: You are given two integers n and k. Find k-th smallest divisor of n, or report that it doesn't exist.

Divisor of n is any such natural number, that n can be divided by it without remainder.

Input

The first line contains two integers n and k (1 ≤ n ≤ 1015, 1 ≤ k ≤ 109).

Output

If n has less than k divisors, output -1.

Otherwise, output the k-th smallest divisor of n.

Examples

Input

4 2


Output

2


Input

5 3


Output

-1


Input

12 5


Output

6

Note

In the first example, number 4 has three divisors: 1, 2 and 4. The second one is 2.

In the second example, number 5 has only two divisors: 1 and 5. The third divisor doesn't exist, so the answer is -1.

Solution (in JAVA):

Solution:

import java.util.Scanner;
import java.util.*;
import java.io.*;
import java.math.*;



//********************************************************K.S.J_@@@@@@@@@@@@@@@@@@@@@@@@@****************************

public class kthDivisor{
	static BufferedReader reader;
    static StringTokenizer tokenizer;
	
	static void init(InputStream input) {reader = new BufferedReader(new InputStreamReader(input) );
        tokenizer = new StringTokenizer("");
    }
	static String next() throws IOException {
        while (!tokenizer.hasMoreTokens() ) { tokenizer = new StringTokenizer(reader.readLine() );}
        return tokenizer.nextToken();
    }
	static String nextLine() throws IOException { return  next();}
	static int nextInt() throws IOException {return Integer.parseInt( next() );}
	static double nextDouble() throws IOException {return Double.parseDouble( next() );}
	static long nextLong() throws IOException {return Long.parseLong( next() );}
	static BigInteger nextBigInteger() throws IOException {return new BigInteger(next()) ;}

	static void inputArrayInt(int arr[],int size)throws IOException{for(int i=0;i<size;i++)arr[i]=nextInt();}
	static void inputArrayDouble(double arr[],int size)throws IOException{for(int i=0;i<size;i++)arr[i]=nextDouble();}
	static void inputArrayLong(long arr[],int size)throws IOException{for(int i=0;i<size;i++)arr[i]=nextLong();}
	static void inputArrayString(String arr[],int size)throws IOException{for(int i=0;i<size;i++)arr[i]=nextLine();}


	public static void main(String args[]) throws IOException{
		init(System.in);
			long no=nextLong();
			int k=nextInt();
			int c=-1;
			long sq=(long)Math.sqrt(no);

			

			ArrayList<Long> Darr=new ArrayList<Long>();
			
			
				boolean flag=true;
						for(long i=1;i<=sq;i++){
							flag=false;
							if(no%i==0){Darr.add(i);flag=true;} 
								if(flag==true && i<=sq && i!=(no/i) ){Darr.add((long)(no/i));}
							}
						

						Collections.sort(Darr);
		
			int l=Darr.size();
			
			if(l<k){System.out.println("-1");return;}
			else{System.out.println(Darr.get(k-1));}
			


			
			}

}