public boolean find(int arr[], int givenSum) {
		int len = arr.length;

		for (int i = 0, j = len - 1; i <= j;) {
			if (arr[i] + arr[j] == givenSum) {
				System.out.println("Given no : " + givenSum
						+ " found at index : " + i + " value :" + arr[i]
						+ " and index : " + j + " value : " + arr[j]);
				return true;
			} else if (arr[i] + arr[j] < givenSum) {
				// Rather than blind increment
				// Smartly checks whether middle is a viable index if yes then
				// point to that index+1
				if (arr[(i + j) / 2] + arr[j] < givenSum) {
					i = ((i + j) / 2) + 1;
				} else {
					// otherwise increment pointer
					i++;
				}
			} else if (arr[i] + arr[j] > givenSum) {
				// Decrement; same as above
				if (arr[i] + arr[(i + j) / 2] > givenSum) {
					j = ((i + j) / 2) - 1;
				} else {
					j--;
				}
			}
		}
		return false;
	}