Calvin Game Getting Error

Help me to find error in this code. The recursion tree gives expected result and even sample test case runs fine.

import java.util.*;

class CalvinGame{

public static int game(int phase,int pos,int dp[][],int arr[]){
	if(pos < 0 || pos >= arr.length)
		return 0;
	if(pos == 0)
		return arr[pos];
	if(dp[phase][pos]!=0)
		return dp[phase][pos];
	// System.out.println("(" + phase + "," + pos + ")");
	int m1=0,m2=0;
	if(phase == 0){
		m1 = Math.max(game(0,pos+1,dp,arr),game(0,pos+2,dp,arr));
	}
	if(phase ==0 || phase == 1){
		m2 = Math.max(game(1,pos-1,dp,arr),game(1,pos-2,dp,arr));
	}
	// System.out.println(m1 + ":::" + m2);
	dp[phase][pos] = Math.max(m1,m2) + arr[pos] ;
		// System.out.println("(" + phase + "," + pos + ")" + "=>" + dp[phase][pos]);
	return dp[phase][pos];
}

public static void main(String args[]){
	Scanner sc = new Scanner(System.in);
	int n = sc.nextInt();
	int k = sc.nextInt();
	int arr[] = new int[n];
	for(int i=0;i<n;i++)
		arr[i] = sc.nextInt();
	System.out.println(game(0,k-1,new int[2][n],arr) - arr[k-1]);
}

}