2, 2, 1, 1);
<BUG>testImpl(new long[] {1,0                ,0,1},
</BUG>
new int [] {0,Integer.MIN_VALUE,0,0},
2, 0, 1, 1);
<BUG>testImpl(new long[] {1,0,0,                1, 0,0},
</BUG>
new int [] {0,0,Integer.MIN_VALUE,0, 0,0},
2, 4, 2, 1);
<BUG>testImpl(new long[] {0,0,0,1, 0,0,1,0},
new int [] {Integer.MIN_VALUE,Integer.MIN_VALUE,Integer.MIN_VALUE,0, 0,Integer.MIN_VALUE,0,Integer.MIN_VALUE},</BUG>
2, 0, 2, 5);

2, 2, 1, 1);
testImpl(new long[] {1,Long.MAX_VALUE                ,0,1},
new int [] {0,Integer.MIN_VALUE,0,0},
2, 0, 1, 1);
testImpl(new long[] {1,0,Long.MAX_VALUE,                1, 0,0},
new int [] {0,0,Integer.MIN_VALUE,0, 0,0},
2, 4, 2, 1);
testImpl(new long[] {Long.MAX_VALUE,Long.MAX_VALUE,Long.MAX_VALUE,1, 0,Long.MAX_VALUE,1,Long.MAX_VALUE},
new int [] {Integer.MIN_VALUE,Integer.MIN_VALUE,Integer.MIN_VALUE,0, 0,Integer.MIN_VALUE,0,Integer.MIN_VALUE},
2, 0, 2, 5);
