#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define ll long long
#define ull unsigned long long
#define pb push_back
#define pii pair<int, int>
#define ff first
#define ss second
#define nl '\n'
#define mod 1000000007
#define inf 1000000009
#define MAXX 1000000000000015
#define LIM 300005
#define eps 1e-9
#define pi acos(-1)
using namespace std;
using namespace __gnu_pbds;
#define ordered_set tree<pii, null_type,less<pii>, rb_tree_tag, tree_order_statistics_node_update>
void FAST_IO() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); }
int arr[LIM];
int minTable[LIM][22], maxTable[LIM][22], logArray[LIM];
void construct(int n)
{
logArray[1] = 0;
for(int i = 2; i <= n; i++)
logArray[i] = 1 + logArray[i/2];
for(int i = 0; i < n; i++){
minTable[i][0] = arr[i];
maxTable[i][0] = arr[i];
}
for(int j = 1; j <= logArray[n] + 1; j++){
for(int i = 0; i + (1 << (j - 1)) < n; i++){
minTable[i][j] = min(minTable[i][j - 1], minTable[i + (1 << (j - 1)) ][j - 1]);
maxTable[i][j] = max(maxTable[i][j - 1], maxTable[i + (1 << (j - 1)) ][j - 1]);
}
}
}
int minQuery(int L, int R)
{
int len = R - L + 1;
int lg = logArray[len];
return min(minTable[L][lg], minTable[R - (1 << lg) + 1][lg]);
}
int maxQuery(int L, int R)
{
int len = R - L + 1;
int lg = logArray[len];
return max(maxTable[L][lg], maxTable[R - (1 << lg) + 1][lg]);
}
int bs(int pos, int n, int x, int y)
{
int lo = pos, hi = n - 1, md, ans = pos - 1;
while(lo <= hi){
md = lo + (hi - lo)/2;
int rangeMin = minQuery(pos, md);
int rangeMax = maxQuery(pos, md);
if(x == rangeMax && rangeMin == y){
ans = md;
lo = md + 1;
}
else if((x >= rangeMax && y < rangeMin) || (x > rangeMax && y <= rangeMin)){
lo = md + 1;
}
else{
hi = md - 1;
}
}
return ans;
}
int bs2(int pos, int n, int x, int y)
{
int lo = pos, hi = n - 1, md, ans = pos;
while(lo <= hi){
md = lo + (hi - lo)/2;
int rangeMin = minQuery(pos, md);
int rangeMax = maxQuery(pos, md);
if(x == rangeMax && rangeMin == y){
ans = md;
hi = md - 1;
}
else if((x >= rangeMax && y < rangeMin) || (x > rangeMax && y <= rangeMin)){
lo = md + 1;
}
else{
hi = md - 1;
}
}
return ans;
}
int main()
{
///MUST READ THE POINTS BELOW BEFORE SUBMIT
FAST_IO();
int n, x, y;
cin >> n >> x >> y;
for(int i = 0; i < n; i++)
cin >> arr[i];
construct(n);
ll ans = 0;
for(int i = 0; i < n; i++){
ans += bs(i, n, x, y) - bs2(i, n, x, y) + 1;
}
cout << ans << nl;
return 0;
///MUST READ THE POINTS BELOW BEFORE SUBMIT
}
/**
1. LOOK SPECIAL CASE N = 1.
2. LOOK FOR OVERFLOW.
3. LOOK FOR OUT OF BOUNDS.
**/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBmZiBmaXJzdAojZGVmaW5lIHNzIHNlY29uZAojZGVmaW5lIG5sICdcbicKI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIGluZiAxMDAwMDAwMDA5CiNkZWZpbmUgTUFYWCAxMDAwMDAwMDAwMDAwMDE1CiNkZWZpbmUgTElNIDMwMDAwNQojZGVmaW5lIGVwcyAxZS05CiNkZWZpbmUgcGkgYWNvcygtMSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlPHBpaSwgbnVsbF90eXBlLGxlc3M8cGlpPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4KCnZvaWQgRkFTVF9JTygpIHsgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOyB9CgppbnQgYXJyW0xJTV07CmludCBtaW5UYWJsZVtMSU1dWzIyXSwgbWF4VGFibGVbTElNXVsyMl0sIGxvZ0FycmF5W0xJTV07Cgp2b2lkIGNvbnN0cnVjdChpbnQgbikKewogICAgbG9nQXJyYXlbMV0gPSAwOwogICAgZm9yKGludCBpID0gMjsgaSA8PSBuOyBpKyspCiAgICAgICAgbG9nQXJyYXlbaV0gPSAxICsgbG9nQXJyYXlbaS8yXTsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBtaW5UYWJsZVtpXVswXSA9IGFycltpXTsKICAgICAgICBtYXhUYWJsZVtpXVswXSA9IGFycltpXTsKICAgIH0KCiAgICBmb3IoaW50IGogPSAxOyBqIDw9IGxvZ0FycmF5W25dICsgMTsgaisrKXsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpICsgKDEgPDwgKGogLSAxKSkgPCBuOyBpKyspewogICAgICAgICAgICBtaW5UYWJsZVtpXVtqXSA9IG1pbihtaW5UYWJsZVtpXVtqIC0gMV0sIG1pblRhYmxlW2kgKyAoMSA8PCAoaiAtIDEpKSBdW2ogLSAxXSk7CiAgICAgICAgICAgIG1heFRhYmxlW2ldW2pdID0gbWF4KG1heFRhYmxlW2ldW2ogLSAxXSwgbWF4VGFibGVbaSArICgxIDw8IChqIC0gMSkpIF1baiAtIDFdKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtaW5RdWVyeShpbnQgTCwgaW50IFIpCnsKICAgIGludCBsZW4gPSBSIC0gTCArIDE7CiAgICBpbnQgbGcgPSBsb2dBcnJheVtsZW5dOwogICAgcmV0dXJuIG1pbihtaW5UYWJsZVtMXVtsZ10sIG1pblRhYmxlW1IgLSAoMSA8PCBsZykgKyAxXVtsZ10pOwp9CgppbnQgbWF4UXVlcnkoaW50IEwsIGludCBSKQp7CiAgICBpbnQgbGVuID0gUiAtIEwgKyAxOwogICAgaW50IGxnID0gbG9nQXJyYXlbbGVuXTsKICAgIHJldHVybiBtYXgobWF4VGFibGVbTF1bbGddLCBtYXhUYWJsZVtSIC0gKDEgPDwgbGcpICsgMV1bbGddKTsKfQoKaW50IGJzKGludCBwb3MsIGludCBuLCBpbnQgeCwgaW50IHkpCnsKICAgIGludCBsbyA9IHBvcywgaGkgPSBuIC0gMSwgbWQsIGFucyA9IHBvcyAtIDE7CiAgICB3aGlsZShsbyA8PSBoaSl7CiAgICAgICAgbWQgPSBsbyArIChoaSAtIGxvKS8yOwogICAgICAgIGludCByYW5nZU1pbiA9IG1pblF1ZXJ5KHBvcywgbWQpOwogICAgICAgIGludCByYW5nZU1heCA9IG1heFF1ZXJ5KHBvcywgbWQpOwogICAgICAgIGlmKHggPT0gcmFuZ2VNYXggJiYgcmFuZ2VNaW4gPT0geSl7CiAgICAgICAgICAgIGFucyA9IG1kOwogICAgICAgICAgICBsbyA9IG1kICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZigoeCA+PSByYW5nZU1heCAmJiB5IDwgcmFuZ2VNaW4pIHx8ICh4ID4gcmFuZ2VNYXggJiYgeSA8PSByYW5nZU1pbikpewogICAgICAgICAgICBsbyA9IG1kICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgaGkgPSBtZCAtIDE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFuczsKfQoKaW50IGJzMihpbnQgcG9zLCBpbnQgbiwgaW50IHgsIGludCB5KQp7CiAgICBpbnQgbG8gPSBwb3MsIGhpID0gbiAtIDEsIG1kLCBhbnMgPSBwb3M7CiAgICB3aGlsZShsbyA8PSBoaSl7CiAgICAgICAgbWQgPSBsbyArIChoaSAtIGxvKS8yOwogICAgICAgIGludCByYW5nZU1pbiA9IG1pblF1ZXJ5KHBvcywgbWQpOwogICAgICAgIGludCByYW5nZU1heCA9IG1heFF1ZXJ5KHBvcywgbWQpOwogICAgICAgIGlmKHggPT0gcmFuZ2VNYXggJiYgcmFuZ2VNaW4gPT0geSl7CiAgICAgICAgICAgIGFucyA9IG1kOwogICAgICAgICAgICBoaSA9IG1kIC0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZigoeCA+PSByYW5nZU1heCAmJiB5IDwgcmFuZ2VNaW4pIHx8ICh4ID4gcmFuZ2VNYXggJiYgeSA8PSByYW5nZU1pbikpewogICAgICAgICAgICBsbyA9IG1kICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgaGkgPSBtZCAtIDE7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKQp7CiAgICAvLy9NVVNUIFJFQUQgVEhFIFBPSU5UUyBCRUxPVyBCRUZPUkUgU1VCTUlUCgogICAgRkFTVF9JTygpOwoKICAgIGludCBuLCB4LCB5OwoKICAgIGNpbiA+PiBuID4+IHggPj4geTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgY2luID4+IGFycltpXTsKCiAgICBjb25zdHJ1Y3Qobik7CgogICAgbGwgYW5zID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGFucyArPSBicyhpLCBuLCB4LCB5KSAtIGJzMihpLCBuLCB4LCB5KSArIDE7CiAgICB9CgogICAgY291dCA8PCBhbnMgPDwgbmw7CgogICAgcmV0dXJuIDA7CiAgICAvLy9NVVNUIFJFQUQgVEhFIFBPSU5UUyBCRUxPVyBCRUZPUkUgU1VCTUlUCn0KLyoqCiAgICAxLiBMT09LIFNQRUNJQUwgQ0FTRSBOID0gMS4KICAgIDIuIExPT0sgRk9SIE9WRVJGTE9XLgogICAgMy4gTE9PSyBGT1IgT1VUIE9GIEJPVU5EUy4KKiovCg==