# 標準入力の1行目を取得
N, K, M = map(int, input().split())
# 解説を参考
## 個数分+1この[]を配列に入れる。indexを色、価値を配列内の値として登録
jewels = [[] for i in range(N + 1)]
## 個数分ループを回して、2行目以降の標準入力から、jewelsへ適切な色のindexで、価値を数値で配列内に登録
## [[], [30, 40, 50], [10], [20], [], []] のようになる
for i in range(N):
C, V = map(int, input().split())
jewels[C].append(V)
colorfv = []
# 取らなければいけない色数分、色の配列から先にとる準備のために、各色の先頭だけの配列に詰める
# 準備するのにcolorfvに抜き出したものは、元の宝石の配列内で印をつける
for i in range(N):
if (jewels[i]):
jewels[i].sort(reverse=True)
colorfv.append(jewels[i][0])
jewels[i][0]='x'
colorfv.sort(reverse=True)
# 元の宝石の配列を平坦化し、印をつけたものを削除し、大きい順にソート
flatjewels = []
for i in range(len(jewels)):
for j in range(len(jewels[i])):
flatjewels.append(jewels[i][j])
flatjewels = [i for i in flatjewels if i != 'x']
flatjewels.sort(reverse=True)
# それぞれの並べた宝石をそのまま合わせて、標準出力
result = []
formatted_j = colorfv+flatjewels
for i in range(K):
result.append(formatted_j[i])
print(sum(result))