1220 {
1221 unsigned short n;
1222 unsigned short x;
1223 unsigned short y;
1224 unsigned short z;
1225 cin >> n >> x >> y >> z;
1226 auto as = unordered_map<unsigned int, unsigned int>();
1227 auto bs = unordered_map<unsigned int, unsigned int>();
1228 auto edges = set<unsigned int>();
1229 for(unsigned short i = 0; i < n; i++) {
1230 unsigned int a;
1231 unsigned int b;
1232 cin >> a >> b;
1233 if(!as.contains(a)) {
1234 as.insert(pair<unsigned int, unsigned int>(a, 1));
1235 edges.insert(a);
1236 } else {
1237 as[a]++;
1238 }
1239 if(!bs.contains(b)) {
1240 bs.insert(pair<unsigned int, unsigned int>(b, 1));
1241 edges.insert(b);
1242 } else {
1243 bs[b]++;
1244 }
1245 }
1246 unsigned int count = x * n;
1247 unsigned int max = count;
1248 for(unsigned int edge: edges) {
1249 if(as.contains(edge)) {
1250 count += (y - x) * as[edge];
1251 }
1252 if(max < count) {
1253 max = count;
1254 }
1255 if(bs.contains(edge)) {
1256 count -= (y - z) * bs[edge];
1257 }
1258 }
1259 cout << max;
1260 return 0;
1261 }