#include using namespace std; int main() { /* ios::sync_with_stdio(false); */ int N, K; cin >> N >> K; vector A(N); for (int i = 0; i < N; ++i) cin >> A[i]; function dvcq = [&](int l, int r) { if (r - l == 1) return (int64_t) (A[l] * 2 == K); int m = l + r >> 1; int64_t res = dvcq(l, m) + dvcq(m, r); map cnt; map sum; int minv = 1 << 30; bool minvdup = false; for (int i = m - 1, j = m; l <= i; --i) { if (minv == A[i]) minvdup = true; if (A[i] < minv) minv = A[i], minvdup = false; if (minvdup) continue; while (j < r && A[j] > minv) { cnt[A[j]] += 1; sum[A[j]] += j + 1; ++j; } if (cnt.count(K - A[i])) { res += sum[K - A[i]] - (int64_t) i * cnt[K - A[i]]; } } cnt.clear(); sum.clear(); minv = 1 << 30; minvdup = false; for (int i = m, j = m - 1; i < r; ++i) { if (minv == A[i]) minvdup = true; if (A[i] < minv) minv = A[i], minvdup = false; if (minvdup) continue; while (l <= j && A[j] > minv) { cnt[A[j]] += 1; sum[A[j]] += j; --j; } if (cnt.count(K - A[i])) { res += (int64_t) (i + 1) * cnt[K - A[i]] - sum[K - A[i]]; } } return res; }; cout << dvcq(0, N) << endl; return 0; }