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.*;
import java.lang.ArrayIndexOutOfBoundsException;
import java.lang.Exception;
import java.lang.ArithmeticException;
import java.lang.InterruptedException;
import java.lang.NullPointerException;
public class Test{
	static Scanner s = new Scanner(System.in);
	public static int _I(){int x=s.nextInt(); return x;}
	public static long _ll(){long l=s.nextLong(); return l;}
	public static double _d(){double x=s.nextDouble(); return x;}
	public static float _f(){float x=s.nextFloat(); return x;}
	public static String _S(){String str=s.next(); return str;}
	public static StringBuffer _SB(){StringBuffer sb=new StringBuffer(s.next()); return sb;}
	public static StringBuilder _sb(){StringBuilder sbb=new StringBuilder(s.next()); return sbb;}
	static long ar[]=new long[100000];
	public static void RhN(){
		long n=_ll(),tmp;int k=_I();
		int c=0;
		boolean flag=false;
	    
		for(int i=1;i<=Math.sqrt(n);i++){
			if(n%i==0){
				ar[c++]=i;
				if(n/i!=i)
				ar[c++]=n/i;
			}
		}
		Arrays.sort(ar,0,c);
		if(k>c){
			System.out.println(-1);
			return;
		}
		System.out.println(ar[k-1]);
	}
	public static void main(String[] args)throws ArrayIndexOutOfBoundsException{
		Test t = new Test();
		Test.RhN();
	}
}