from bisect import bisect_left N, X, Y = map(int, input().split()) xy = [list(map(int, input().split())) for _ in range(N)] INF = 1<<60 def compress(A): S = sorted(set(A)) D = dict() for i in range(len(S)): D[S[i]] = i return D, S def func(A, limit): B = [] for a in A: B.append(a) B.append((a+limit//2)%limit) B.append((a+limit//2+1)%limit) B.sort() D, S = compress(B) L = len(D) cum = [0]*(L*2+1) cumC = [0]*(L*2+1) SUM = 0 for a in A: cum[D[a]+1] += a cum[D[a]+1+L] += a+limit cumC[D[a]+1] += 1 cumC[D[a]+1+L] += 1 SUM += a for i in range(1, L*2+1): cum[i] += cum[i-1] cumC[i] += cumC[i-1] S *= 2 for i in range(L, L*2): S[i] += limit ans = -INF for i in range(L): mid = bisect_left(S, S[i]+limit//2+limit%2) right = bisect_left(S, S[i]+limit) ans = max(ans, ((cum[mid]-cum[i])-S[i]*(cumC[mid]-cumC[i]))+((S[i]+limit)*(cumC[right]-cumC[mid])-(cum[right]-cum[mid]))) return ans B = [x-1 for x, y in xy] C = [y-1 for x, y in xy] print(func(B, X)+func(C, Y))