#include<bits/stdc++.h>

#ifdef THEMIS
#include "testlib_themis.h"
const std::string TASK_NAME = "TWOSUM";	// Mã bài cho THEMIS
#else
#include "testlib.h"
#endif // THEMIS

using namespace std;

void check() {
    // 1. Đọc dữ liệu đầu vào (Input)
    int n = inf.readInt();              // Đọc N
    long long target = inf.readLong();  // Đọc Target (dùng long long vì tổng có thể lớn)
    
    // Đọc dãy số A (Lưu mảng bắt đầu từ 1 để khớp với đề bài)
    vector<long long> a(n + 1);
    for (int i = 1; i <= n; ++i) {
        a[i] = inf.readLong();
    }

    // 2. Đọc kết quả của thí sinh (Participant - ouf)
    // Vì kết quả có thể là chuỗi "No solution" hoặc 2 số nguyên,
    // ta đọc token đầu tiên dưới dạng chuỗi để kiểm tra.
    string pToken = ouf.readToken();

    if (pToken == "No") {
        // Trường hợp thí sinh in "No solution"
        string pNext = ouf.readToken();
        if (pNext != "solution") {
            quitf(_pe, "Output format error: Expected 'No solution', found 'No %s'", pNext.c_str());
        }

        // Kiểm tra xem đáp án của Jury (ans) có tìm ra nghiệm không
        // Nếu Jury tìm ra nghiệm (số) mà thí sinh in "No solution" -> WA
        string jToken = ans.readToken();
        if (jToken != "No") {
            quitf(_wa, "Jury found a solution, but participant said 'No solution'");
        }
        
        // Nếu cả 2 đều không tìm thấy nghiệm -> OK
        quitf(_ok, "Correct: No solution exists");
    } 
    else {
        // Trường hợp thí sinh in ra chỉ số (token đầu tiên không phải "No")
        int i1, i2;
        
        // Cố gắng chuyển đổi token đầu tiên sang số nguyên
        try {
            i1 = stoi(pToken);
        } catch (...) {
            quitf(_pe, "Expected integer index or 'No solution', found '%s'", pToken.c_str());
        }
        
        // Đọc chỉ số thứ 2
        i2 = ouf.readInt();

        // Kiểm tra miền giá trị chỉ số (1 <= i <= N)
        if (i1 < 1 || i1 > n || i2 < 1 || i2 > n) {
            quitf(_wa, "Indices (%d, %d) out of bounds [1, %d]", i1, i2, n);
        }

        // Kiểm tra 2 chỉ số phải khác nhau (Bài toán Two Sum thường yêu cầu 2 phần tử khác nhau)
        if (i1 == i2) {
            quitf(_wa, "Indices must be distinct");
        }

        // Kiểm tra tổng
        long long val1 = a[i1];
        long long val2 = a[i2];
        long long sum = val1 + val2;

        if (sum == target) {
            quitf(_ok, "Correct: A[%d] + A[%d] = %lld + %lld = %lld", i1, i2, val1, val2, target);
        } else {
            quitf(_wa, "Wrong sum: A[%d] + A[%d] = %lld + %lld = %lld (Expected %lld)", i1, i2, val1, val2, sum, target);
        }
    }
}

int main(int argc, char *argv[]) {
#ifdef THEMIS
    registerTestlibThemis(TASK_NAME + ".inp", TASK_NAME + ".out");
#else
    registerTestlibCmd(argc, argv);
#endif
    check();
    return 0;
}