// I ♡ 鞠婧祎
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
#define freopen(name) if(fopen(name".INP","r")) {freopen (name".INP","r",stdin); freopen (name".OUT","w",stdout);}
using namespace std;
using ll = long long;
void justDoIt();
int main() {
// freopen("");
ios_base::sync_with_stdio(false);
cin.tie(0);
justDoIt();
return 0;
}
const int N = 3e5 + 5;
ll dp[105][105][105];
int a[N], b[N];
ll l[N], r[N];
void test() {
int n, m, s;
cin >> n >> m >> s;
vector<int> id;
for (int i = 1; i <= n; i++) {
cin >> a[i] >> b[i];
id.push_back(i);
}
sort(id.begin(), id.end(), [] (int x, int y) {
return a[x] - b[x] > a[y] - b[y];
});
priority_queue<ll, vector<ll>, greater<ll>> q;
ll sum = 0;
for (int i = 1; i <= n; i++) {
int it = id[i - 1];
q.push(a[it]);
sum += a[it];
while (q.size() > m) {
sum -= q.top(); q.pop();
}
l[i] = (q.size() == m ? sum : -1e18);
}
while (q.size() > 0) {q.pop();}
sum = 0;
for (int i = n; i >= 1; i--) {
int it = id[i - 1];
q.push(b[it]);
sum += b[it];
while (q.size() > s) {
sum -= q.top(); q.pop();
}
r[i] = (q.size() == s ? sum : -1e18);
}
ll res = -1e18;
for (int i = 1; i < n; i++) {
res = max(res, l[i] + r[i + 1]);
}
if (m == 0) {
res = max(res, r[1]);
}
if (s == 0) {
res = max(res, l[n]);
}
cout << res;
}
void justDoIt() {
int t = 1;
// cin >> t;
for (int tests = 1; tests <= t; tests++) {
test();
}
}