#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define ll long long
#define pi 3.14159265358979323846
#define pb push_back
#define ar array
#define int long long
template<typename T, typename cmp = std::greater<T>>
using pq = priority_queue<T, vector<T>, cmp>;
template<typename T, typename cmp = std::less<T>>
using ordered_set = tree<T, __gnu_pbds::null_type, cmp, __gnu_pbds::rb_tree_tag, __gnu_pbds::tree_order_statistics_node_update>;
void chay()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define task "SECINT"
freopen(task".INP", "r", stdin);
freopen(task".OUT", "w", stdout);
}
const int N = 2e5, INF = 2e9+7;
const int block = 600;
const long long INFLL = 2e18+7;
long long M = 1e9+7;
int n, k, a[N+5], d[N+5], kq, pa[N+5], tong[N+5], sz[N+5];
map<int,int> m;
ar<int,2> b[N+5];
ordered_set<ar<int,2>> th[N+5];
void make_set(int i)
{
sz[i] = 1;
pa[i] = i;
th[i].insert({a[i], i});
}
int timpa(int u)
{
if (pa[u] == u) return pa[u];
return pa[u] = timpa(pa[u]);
}
void hoppa(int x, int y, int mn)
{
x = timpa(x);
y = timpa(y);
if (x == y) return;
if (sz[x] > sz[y]) swap(x, y);
pa[x] = y;
sz[y] += sz[x];
for (ar<int,2> r : th[x])
{
int so = r[0];
kq += th[y].order_of_key({k - so - mn, INF});
}
for (ar<int,2> r : th[x])
{
th[y].insert(r);
}
}
void solve()
{
cin>>n>>k;
set<ar<int,2>> s;
for (int i = 1; i <= n; i++)
{
cin>>a[i];
s.insert({a[i], i});
}
int dem = 0;
for (ar<int,2> x : s)
{
dem++;
d[x[1]] = dem;
}
for (int i = 1; i <= n; i++)
{
b[i][0] = d[i];
b[i][1] = i;
}
for (int i = 1; i <= n; i++)
{
make_set(i);
}
sort(b+1, b+n+1, greater<ar<int,2>>());
for (int i = 1; i <= n; i++)
{
int cs = b[i][1];
if (a[cs] * 3 <= k) kq++;
if (cs > 1 && d[cs-1] > d[cs])
{
hoppa(cs-1, cs, a[cs]);
}
if (cs < n && d[cs+1] > d[cs])
{
hoppa(cs, cs+1, a[cs]);
}
}
cout<<kq;
}
signed main ()
{
chay();
int t = 1;
//cin>>t;
while (t--)
{
solve();
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NiAKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBhciBhcnJheQojZGVmaW5lIGludCBsb25nIGxvbmcKCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIGNtcCA9IHN0ZDo6Z3JlYXRlcjxUPj4KdXNpbmcgcHEgPSBwcmlvcml0eV9xdWV1ZTxULCB2ZWN0b3I8VD4sIGNtcD47Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBjbXAgPSBzdGQ6Omxlc3M8VD4+CnVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZTxULCBfX2dudV9wYmRzOjpudWxsX3R5cGUsIGNtcCwgX19nbnVfcGJkczo6cmJfdHJlZV90YWcsIF9fZ251X3BiZHM6OnRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47Cgp2b2lkIGNoYXkoKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgI2RlZmluZSB0YXNrICJTRUNJTlQiCiAgICBmcmVvcGVuKHRhc2siLklOUCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbih0YXNrIi5PVVQiLCAidyIsIHN0ZG91dCk7Cn0KCmNvbnN0IGludCBOID0gMmU1LCBJTkYgPSAyZTkrNzsKY29uc3QgaW50IGJsb2NrID0gNjAwOwpjb25zdCBsb25nIGxvbmcgSU5GTEwgPSAyZTE4Kzc7CmxvbmcgbG9uZyBNID0gMWU5Kzc7CmludCBuLCBrLCBhW04rNV0sIGRbTis1XSwga3EsIHBhW04rNV0sIHRvbmdbTis1XSwgc3pbTis1XTsKbWFwPGludCxpbnQ+IG07CmFyPGludCwyPiBiW04rNV07Cm9yZGVyZWRfc2V0PGFyPGludCwyPj4gdGhbTis1XTsKCnZvaWQgbWFrZV9zZXQoaW50IGkpCnsKICAgIHN6W2ldID0gMTsKICAgIHBhW2ldID0gaTsKICAgIHRoW2ldLmluc2VydCh7YVtpXSwgaX0pOwp9CgppbnQgdGltcGEoaW50IHUpCnsKICAgIGlmIChwYVt1XSA9PSB1KSByZXR1cm4gcGFbdV07CiAgICByZXR1cm4gcGFbdV0gPSB0aW1wYShwYVt1XSk7Cn0KCnZvaWQgaG9wcGEoaW50IHgsIGludCB5LCBpbnQgbW4pCnsKICAgIHggPSB0aW1wYSh4KTsKICAgIHkgPSB0aW1wYSh5KTsKICAgIGlmICh4ID09IHkpIHJldHVybjsKICAgIGlmIChzelt4XSA+IHN6W3ldKSBzd2FwKHgsIHkpOwogICAgcGFbeF0gPSB5OwogICAgc3pbeV0gKz0gc3pbeF07CiAgICBmb3IgKGFyPGludCwyPiByIDogdGhbeF0pCiAgICB7CiAgICAgICAgaW50IHNvID0gclswXTsKICAgICAgICBrcSArPSB0aFt5XS5vcmRlcl9vZl9rZXkoe2sgLSBzbyAtIG1uLCBJTkZ9KTsKICAgIH0KICAgIGZvciAoYXI8aW50LDI+IHIgOiB0aFt4XSkKICAgIHsKICAgICAgICB0aFt5XS5pbnNlcnQocik7CiAgICB9Cn0KCnZvaWQgc29sdmUoKQp7CiAgICBjaW4+Pm4+Pms7CiAgICBzZXQ8YXI8aW50LDI+PiBzOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGNpbj4+YVtpXTsKICAgICAgICBzLmluc2VydCh7YVtpXSwgaX0pOwogICAgfQoKICAgIGludCBkZW0gPSAwOwogICAgZm9yIChhcjxpbnQsMj4geCA6IHMpCiAgICB7CiAgICAgICAgZGVtKys7CiAgICAgICAgZFt4WzFdXSA9IGRlbTsKICAgIH0KCgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGJbaV1bMF0gPSBkW2ldOwogICAgICAgIGJbaV1bMV0gPSBpOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBtYWtlX3NldChpKTsKICAgIH0KCiAgICBzb3J0KGIrMSwgYituKzEsIGdyZWF0ZXI8YXI8aW50LDI+PigpKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBpbnQgY3MgPSBiW2ldWzFdOwogICAgICAgIGlmIChhW2NzXSAqIDMgPD0gaykga3ErKzsKCiAgICAgICAgaWYgKGNzID4gMSAmJiBkW2NzLTFdID4gZFtjc10pCiAgICAgICAgewogICAgICAgICAgICBob3BwYShjcy0xLCBjcywgYVtjc10pOwogICAgICAgIH0KICAgICAgICBpZiAoY3MgPCBuICYmIGRbY3MrMV0gPiBkW2NzXSkKICAgICAgICB7CiAgICAgICAgICAgIGhvcHBhKGNzLCBjcysxLCBhW2NzXSk7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQ8PGtxOwp9CiAKc2lnbmVkIG1haW4gKCkKewogICAgY2hheSgpOwogICAgaW50IHQgPSAxOyAgIAogICAgLy9jaW4+PnQ7IAogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9