public int[] twoSum(int[] numbers, int target) {
        int []numbers_ = Arrays.copyOf(numbers, numbers.length);
        Arrays.sort(numbers_);
        int []result= {-1, -1};
        int i = 0, j = 0, temp = 0;
        Label:
        for(i = 0; i < numbers_.length - 1; i++){
            temp = target - numbers_[i];
            if(binarySearch(numbers_, 0, numbers_.length - 1, temp))
                break;
        }
        for(j = 0; j < numbers.length; j++){
            //because we shuffled the sequence of numbers_, the first number should be assigned to result[0]
            //there might a possibility that temp==numbers_[i], to avoid we assign result[0] twice, we initialize it to -1
            if((numbers[j] == numbers_[i] || numbers[j] == temp) && result[0] == -1){
                result[0]= j + 1;
                continue;
            }
            //
            if((numbers[j] == numbers_[i] || numbers[j] == temp) && result[1] == -1){
                result[1] = j + 1;
                continue;
            }
        }
        return result;
    }