#include <bits/stdc++.h>
using namespace std;

int n;
long long X,Y,Z;
vector<int> inpa, inpb;


void sub12()
{
	int LIM = 0;
	for(int i =1; i<=n; i++) LIM  += abs(inpa[i] - inpb[i]);
	int OFFSET  = LIM;
	int INF = 2*LIM;
	vector<vector<long long>> dp(n+1, vector<long long>(INF+1, 1e18));
	dp[0][OFFSET] = 0;
	for(int  i =1; i<=n; i++)
	{
		for(int j = 0; j<=INF; j++)
		{
			for(int x = 0; x<=INF; x++)
			{
				int di = inpb[i] - inpa[i];
				long long cost = 0;
				if(di < 0)
				{
					
					int newj = j -  OFFSET;
					int newx = x - OFFSET;
					if(newx  - di < newj) cost = ((long long)newj - newx + di) *X;
					else cost = ((long long)abs(newj -  newx + di)) * Y;
				}
				else 
				{
					int newj = j - OFFSET;
					int newx = x - OFFSET;
					di*=-1;
					if(newx  + di < newj) cost = ((long long)newj - newx - di) *X;
					else cost = ((long long)abs(newj -  newx - di)) * Y;
				}
				dp[i][j] = min(dp[i][j], ((long long)abs(x - OFFSET)*Z) + cost + dp[i-1][x]);
			}
		}
	}
	cout << dp[n][OFFSET];
}


int main()
{
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	cin >> n;
	cin >> X  >> Y >> Z;
	inpa.resize(n+1);
	inpb.resize(n+1);
	for(int i =1; i<=n; i++) cin >> inpa[i] >> inpb[i];
	sub12();
	
	return 0;
}
