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>();
			HashSet<Long> hs=new HashSet<Long>();
			if(sq==1){Darr.add((long)1);}
				else{
						for(long i=1;i<=sq;i++){
							if(no%i==0 && !hs.contains(i)){Darr.add(i); hs.add(i);
								if(i<=sq && !hs.contains((long)no/i)){Darr.add((long)(no/i));}
							}
						}
						Collections.sort(Darr);}
			//Darr.add(no);
			int l=Darr.size();
			//System.out.println(Darr);
			//System.out.println(l);
			if(l<k){System.out.println("-1");return;}
			else{System.out.println(Darr.get(k-1));}
			


			
			}

}