import java.util.*;
public class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); String line
= scanner.
nextLine(); int target = scanner.nextInt();
// 用 \\s+ 兼容多个空格;其余保持不变
String[] parts
= line.
trim().
split("\\s+"); int n = parts.length;
int[] A = new int[n];
for (int i = 0; i < n; i++) {
}
Map
<Integer, List
<Integer
>> map
= new HashMap
<>(); List<int[]> pairs = new ArrayList<>();
for (int j = 0; j < n; j++) {
int need = A[j] - target;
if (map.containsKey(need)) {
List<Integer> indices = map.get(need);
for (int i : indices) {
pairs.add(new int[]{i, j});
}
}
// 只新增这段:同时处理 A[i] - A[j] == target 的情况
int need2 = A[j] + target;
if (map.containsKey(need2)) {
List<Integer> indices = map.get(need2);
for (int i : indices) {
pairs.add(new int[]{i, j});
}
}
if (!map.containsKey(A[j])) {
map.put(A[j], new ArrayList<>());
}
map.get(A[j]).add(j);
}
StringJoiner sj = new StringJoiner(", ");
for (int[] pair : pairs) {
sj.add("(" + pair[0] + ", " + pair[1] + ")");
}
System.
out.
print(sj.
toString()); }
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2Nhbm5lciA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgU3RyaW5nIGxpbmUgPSBzY2FubmVyLm5leHRMaW5lKCk7CiAgICAgICAgaW50IHRhcmdldCA9IHNjYW5uZXIubmV4dEludCgpOwoKICAgICAgICAvLyDnlKggXFxzKyDlhbzlrrnlpJrkuKrnqbrmoLzvvJvlhbbkvZnkv53mjIHkuI3lj5gKICAgICAgICBTdHJpbmdbXSBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KCJcXHMrIik7CiAgICAgICAgaW50IG4gPSBwYXJ0cy5sZW5ndGg7CiAgICAgICAgaW50W10gQSA9IG5ldyBpbnRbbl07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgQVtpXSA9IEludGVnZXIucGFyc2VJbnQocGFydHNbaV0pOwogICAgICAgIH0KCiAgICAgICAgTWFwPEludGVnZXIsIExpc3Q8SW50ZWdlcj4+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBMaXN0PGludFtdPiBwYWlycyA9IG5ldyBBcnJheUxpc3Q8PigpOwoKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG47IGorKykgewogICAgICAgICAgICBpbnQgbmVlZCA9IEFbal0gLSB0YXJnZXQ7CiAgICAgICAgICAgIGlmIChtYXAuY29udGFpbnNLZXkobmVlZCkpIHsKICAgICAgICAgICAgICAgIExpc3Q8SW50ZWdlcj4gaW5kaWNlcyA9IG1hcC5nZXQobmVlZCk7CiAgICAgICAgICAgICAgICBmb3IgKGludCBpIDogaW5kaWNlcykgewogICAgICAgICAgICAgICAgICAgIHBhaXJzLmFkZChuZXcgaW50W117aSwgan0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDlj6rmlrDlop7ov5nmrrXvvJrlkIzml7blpITnkIYgQVtpXSAtIEFbal0gPT0gdGFyZ2V0IOeahOaDheWGtQogICAgICAgICAgICBpbnQgbmVlZDIgPSBBW2pdICsgdGFyZ2V0OwogICAgICAgICAgICBpZiAobWFwLmNvbnRhaW5zS2V5KG5lZWQyKSkgewogICAgICAgICAgICAgICAgTGlzdDxJbnRlZ2VyPiBpbmRpY2VzID0gbWFwLmdldChuZWVkMik7CiAgICAgICAgICAgICAgICBmb3IgKGludCBpIDogaW5kaWNlcykgewogICAgICAgICAgICAgICAgICAgIHBhaXJzLmFkZChuZXcgaW50W117aSwgan0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIW1hcC5jb250YWluc0tleShBW2pdKSkgewogICAgICAgICAgICAgICAgbWFwLnB1dChBW2pdLCBuZXcgQXJyYXlMaXN0PD4oKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbWFwLmdldChBW2pdKS5hZGQoaik7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJbIik7CiAgICAgICAgU3RyaW5nSm9pbmVyIHNqID0gbmV3IFN0cmluZ0pvaW5lcigiLCAiKTsKICAgICAgICBmb3IgKGludFtdIHBhaXIgOiBwYWlycykgewogICAgICAgICAgICBzai5hZGQoIigiICsgcGFpclswXSArICIsICIgKyBwYWlyWzFdICsgIikiKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludChzai50b1N0cmluZygpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIl0iKTsKICAgIH0KfQo=