C - Sum of Three Integers 解説 /

実行時間制限: 3 sec / メモリ制限: 1024 MiB

配点 : 600

問題文

整数列 A = (A_1, A_2, \dots, A_N) および整数 X が与えられます。
次の条件を全て満たす整数の組 (i, j, k)1 組出力してください。条件を満たす組が存在しない場合はそのことを報告してください。

  • 1 \leq i \lt j \lt k \leq N
  • A_i + A_j + A_k = X

制約

  • 3 \leq N \leq 10^6
  • 1 \leq X \leq 10^6
  • 1 \leq A_i \leq X
  • 入力される値は全て整数

入力

入力は以下の形式で標準入力から与えられる。

N X
A_1 A_2 \dots A_N

出力

条件を満たす整数の組 (i, j, k) が存在する場合、以下の形式で出力せよ。答えが複数ある場合はどれを出力しても良い。

i j k

条件を満たす整数の組が存在しない場合、-1 を出力せよ。


入力例 1

5 16
1 8 5 10 13

出力例 1

1 3 4

(i, j, k) = (1, 3, 4)1 \leq i \lt j \lt k \leq N かつ A_i + A_j + A_k = 1 + 5 + 10 = 16 = X を満たします。


入力例 2

5 20
1 8 5 10 13

出力例 2

-1

入力例 3

10 100000
73766 47718 74148 49218 76721 31902 21994 18880 29598 98917

出力例 3

4 6 8

Score : 600 points

Problem Statement

You are given an integer sequence A = (A_1, A_2, \dots, A_N) and an integer X.
Print one triple of integers (i, j, k) satisfying all of the following conditions. If no such triple exists, report that fact.

  • 1 \leq i \lt j \lt k \leq N
  • A_i + A_j + A_k = X

Constraints

  • 3 \leq N \leq 10^6
  • 1 \leq X \leq 10^6
  • 1 \leq A_i \leq X
  • All input values are integers.

Input

The input is given from Standard Input in the following format:

N X
A_1 A_2 \dots A_N

Output

If there exists an integer triple (i, j, k) satisfying the conditions, print one in the following format. If there are multiple solutions, you may print any of them.

i j k

If no such triple exists, print -1.


Sample Input 1

5 16
1 8 5 10 13

Sample Output 1

1 3 4

The triple (i, j, k) = (1, 3, 4) satisfies 1 \leq i \lt j \lt k \leq N and A_i + A_j + A_k = 1 + 5 + 10 = 16 = X.


Sample Input 2

5 20
1 8 5 10 13

Sample Output 2

-1

Sample Input 3

10 100000
73766 47718 74148 49218 76721 31902 21994 18880 29598 98917

Sample Output 3

4 6 8