#include <algorithm>
#include <cstdio>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int n;
long long cal[2];
map<long long, long long> nums;
vector<long long> vec;
long long res;
int main () {
freopen ("Compatible.in", "r", stdin);
freopen ("Compatible.out", "w", stdout);
cin >> n >> cal[1] >> cal[0];
long long ni, di;
for (int i = 1; i <= n; i++) {
cin >> ni >> di;
nums[di] = ni;
vec.push_back(di);
}
sort (vec.begin(), vec.end());
for (auto d : vec) {
for (int i = 0; i <= 1; i++) {
if (!nums[d] || !nums[cal[i] - d]) {
continue;
}
if (d == cal[i] - d) {
res += nums[d] / 2;
nums[d] %= 2;
}
else {
long long minn = min (nums[d], nums[cal[i] - d]);
res += minn;
nums[d] -= minn;
nums[cal[i] - d] -= minn;
}
}
}
cout << res << endl;
return 0;
}