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.io.*;
import java.math.BigInteger;
import javafx.util.Pair;
import jdk.nashorn.internal.ir.BreakNode;

public class NEW {

    static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder out = new StringBuilder();
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));

    static int I(String s) {
        return Integer.parseInt(s);
    }

    static long L(String s) {
        return Long.parseLong(s);
    }

    static double D(String s) {
        return Double.parseDouble(s);
    }

    static String[] SA() throws IOException {
        return bf.readLine().split(" ");
    }

    public static void main(String[] args) throws IOException {
       StringTokenizer in=new StringTokenizer(bf.readLine());
       long x=L(in.nextToken());
       int n=I(in.nextToken());
        System.out.println(solve(x,n));
    }
static long solve(long x,int n){

    ArrayList al=new ArrayList();
    for(long i=1;i<=x/i;i++){
        
    if(x%i==0){al.add(i);if(i!=x/i)al.add(x/i);}
    }
   Collections.sort(al);
    if(al.size()>=n){return (long)al.get(n-1);}
    else{return -1;}
}
}