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.*;

/**
 * Created by user on 1/25/17.
 */
public class KthDividor {

    private static Set<Long> data = new HashSet<>();
    private static List<Long> list = new ArrayList<>();

    public static void main(String[] args) {
        InputStream paths = KthDividor.class.getResourceAsStream("kth_dividor_input");
        StringTokenizer tokenizer;
        //try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(paths))) {
        try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) {

            tokenizer = new StringTokenizer(bufferedReader.readLine());

            double n = Double.parseDouble(tokenizer.nextToken());
            long k = Long.parseLong(tokenizer.nextToken());


            if (k > n / 2 + 1) {
                System.out.print("-1");
            } else {
                System.out.print(divisors(n, k));
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static long divisors(double x, long k) {
        long numberOfDivisors = 0;
        long dividor = -1;

        double limit = Math.sqrt(x) + 1;
        for (long i = 1; i <= limit; i++) {
            if (x % i == 0) {
                // System.out.println(i);
                //   System.out.println(x/i);

                if (x / i == i) {
                    numberOfDivisors++;
                    data.add(i);

                } else {
                    numberOfDivisors++;
                    data.add(i);

                    numberOfDivisors++;
                    data.add((long) (x / i));


                }
            }
        }


        list = new ArrayList<>(new TreeSet<Long>(data));
        if (list.size() >= k) {
            dividor = list.get((int) k - 1);
        }

        return dividor;
    }


}