private static void LCSTraceBackHelper(short[][] arrowTable, int x, int y, List<Integer> list, List<List<Integer>> res, int maxLen){
		if(x==0 && y==0){
			if(list.size()==maxLen)
				res.add(list);
			return;
		}
		if((arrowTable[x][y]&(1<<UP))>0){
			LCSTraceBackHelper(arrowTable, x-1,y, new ArrayList<Integer>(list), res, maxLen);
		}
		if((arrowTable[x][y]&(1<<LEFT))>0){
			LCSTraceBackHelper(arrowTable, x,y-1, new ArrayList<Integer>(list), res, maxLen);
		}
		if((arrowTable[x][y]&(1<<DIAGNAL))>0){
			list.add(x);
			LCSTraceBackHelper(arrowTable, x-1, y-1, list, res, maxLen);
		}
	}