public ArrayList<ArrayList<Integer>> twoSum(int[] nums, int begin, int end, int target) {
        ArrayList<ArrayList<Integer>> ans = new ArrayList<ArrayList<Integer>>();
        while (begin + 1 <= end) {
            int val = nums[begin] + nums[end];
            if (val == target) {
                ArrayList<Integer> temp = new ArrayList<Integer>();
                temp.add(nums[begin]);
                temp.add(nums[end]);
                while (begin < nums.length - 1 && nums[begin] == nums[begin + 1]) {
                    ++begin;
                }
                while (end > 0 && nums[end] == nums[end - 1])
                    --end;
                begin++;
                end--;
                ans.add(temp);
            } else if (val < target) {
                ++begin;
            } else {
                --end;
            }
        }
        return ans;
    }