What is the problem in my code? I am getting run time error. I am new to Java programming and I am facing difficulties while compiling the following code:
import java.util.Arrays;
import java.util.Scanner;
public class StoneDivision {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    long n = scan.nextLong();
    int m = scan.nextInt();
    long si[] = new long[m];
    for (int i = 0; i < m; i++) {
        si[i] = scan.nextLong();
    }
    Arrays.sort(si);
    if (calculateWin(n, m, si, si.length - 1, 1)) {
        System.out.println("First");
    } else {
        System.out.println("Second");
    }
}
static boolean calculateWin(long n, int m, long[] si, int siIndex, int count) {
    long siN = si[siIndex];
    if (n / siN == 0)
        return true;
    if (n == 1)
        if (n % siN == 0) {
            long nN = n / siN;
            count++;
        }
    return calculateWin(n, m, si, siIndex - 1, count);
}
}
The error which I am getting:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at StoneDivision.calculateWin(StoneDivision.java:28)
    at StoneDivision.calculateWin(StoneDivision.java:40)
    at StoneDivision.calculateWin(StoneDivision.java:40)
    at StoneDivision.calculateWin(StoneDivision.java:40)
    at StoneDivision.main(StoneDivision.java:19)
Here is the ideone link: http://ideone.com/g2C0ph
