public int[] twoSum(int[] numbers, int target) {
			Map<Integer, List<Integer>> positions = new HashMap<Integer, List<Integer>>();
			for (int i = 0; i < numbers.length; i++) {
				List<Integer> list = positions.get(numbers[i]);
				if (list == null) {
					list = new ArrayList<Integer>();
				}

				list.add(i + 1);
				positions.put(numbers[i], list);
			}

			for (int number : numbers) {
				int rest = target - number;
				if (number == rest) {
					List<Integer> pos = positions.get(number);
					if (pos.size() >= 2) {
						int index1 = pos.get(0);
						int index2 = pos.get(1);
						return new int[] { index1, index2 };
					}
				} else {
					List<Integer> restPos = positions.get(rest);
					if (restPos != null) {
						int index1 = positions.get(number).get(0);
						int index2 = positions.get(rest).get(0);

						if (index1 > index2)
							return new int[] { index2, index1 };
						else
							return new int[] { index1, index2 };
					}
				}
			}

			return null;
		}