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

public class KthDivisor{
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] vals = br.readLine().split(" ");
		long n = Long.parseLong(vals[0]);
		long m = Long.parseLong(vals[1]);
		if(m==1)
			System.out.println(1);
		else {			
			long sqrt = (long) Math.sqrt(n);
			TreeSet<Long> divisors = new TreeSet<>();
			for(long i=1;i<=sqrt;i++){
				if(n%i==0){
					divisors.add(i);
					divisors.add(n/i);
				}
			}
			divisors.add(n);
			if(divisors.size()<m)
				System.out.println(-1);
			else if(divisors.size()==m)
				System.out.println(divisors.last());
			else {
				Iterator<Long> divisorsIt = divisors.iterator();
				long cnt = 0;
				while(divisorsIt.hasNext()){
					long temp = divisorsIt.next();
					cnt++;
					if(cnt==m){
						System.out.println(temp);
						return;
					}
				}
			}
		}
	}
}