#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>

using namespace std;

const int MAXN=10010;

int n,m,t;
int H,W;
int dp[60][600],dp2[60][600];
int h[60],p[60];

int main(){
	//freopen("E.in","r",stdin);
	//freopen("E.out","w",stdout);
	scanf("%d", &t);
	for (int ti = 1; ti <= t; ti ++){
		int n, m;
		scanf("%d%d%d", &n, &H, &W);
		int mh=0,mp=0;
		for (int i=1;i<=n;i++){
			scanf("%d%d",&p[i],&h[i]);
			mh=max(mh,h[i]);
			mp=max(mp,p[i]);
		}
		//cout<<mh<<" "<<mp<<endl;
		
		memset(dp,0xff,sizeof(dp));
		h[0]=0;
		for (int i=1;i<=n;i++){
			if (h[i]<=H){
				for (int j=1;j<=mp;j++)
					dp[i][j] = abs(p[i]-j)*h[i];
			}
			if (h[i-1]==mh) continue;
			//cout<<abs(h[i]-h[i-1])<<"!";
			if (h[i]-h[i-1]>H) continue;
			//cout<<i<<endl;
			if (h[i]==mh){
				int j=p[i];
				int ret=-1;
				int st=max(1,j-W);
				for (int k=st;k<j;k++){
					//if (i==3) cout << i <<" " <<k<<" "<<dp[i-1][k]<<endl;
					if (dp[i-1][k]==-1) continue;
					if (ret==-1) ret = dp[i-1][k]+abs(p[i]-j)*h[i];
						else ret = min(ret, dp[i-1][k]+abs(p[i]-j)*h[i]);
				}
				if (dp[i][j]==-1) dp[i][j]=ret;
					else if (ret!=-1) dp[i][j]=min(ret,dp[i][j]);
				continue;
			}
			
			for (int j=1;j<=mp;j++){
				int ret=-1;
				int st=max(1,j-W);
				for (int k=st;k<j;k++){
					//if (i==3) cout << i <<" " <<k<<" "<<dp[i-1][k]<<endl;
					if (dp[i-1][k]==-1) continue;
					if (ret==-1) ret = dp[i-1][k]+abs(p[i]-j)*h[i];
						else ret = min(ret, dp[i-1][k]+abs(p[i]-j)*h[i]);
				}
				if (dp[i][j]==-1) dp[i][j]=ret;
					else if (ret!=-1) dp[i][j]=min(ret,dp[i][j]);
				//if (i==3) cout<<dp[i][j]<<" ";
			}
		}
		
		
		memset(dp2,0xff,sizeof(dp2));
		h[n+1]=0;
		for (int i=n;i>=1;i--){
			if (h[i]<=H){
				for (int j=1;j<=mp;j++)
					dp2[i][j] = abs(p[i]-j)*h[i];
			}
			if (h[i+1]==mh) continue;
			//cout<<abs(h[i]-h[i-1])<<"!";
			if (h[i]-h[i+1]>H) continue;
			//cout<<i<<endl;
			if (h[i]==mh){
				int j=p[i];
				int ret=-1;
				int st=min(mp,j+W);
				for (int k=j+1;k<=st;k++){
					//if (i==3) cout << i <<" " <<k<<" "<<dp[i-1][k]<<endl;
					if (dp2[i+1][k]==-1) continue;
					if (ret==-1) ret = dp2[i+1][k]+abs(p[i]-j)*h[i];
						else ret = min(ret, dp2[i+1][k]+abs(p[i]-j)*h[i]);
				}
				if (dp2[i][j]==-1) dp2[i][j]=ret;
					else if (ret!=-1) dp2[i][j]=min(ret,dp2[i][j]);
				continue;
			}
			for (int j=1;j<=mp;j++){
				int ret=-1;
				int st=min(mp,j+W);
				for (int k=j+1;k<=st;k++){
					//if (i==3) cout << i <<" " <<k<<" "<<dp[i-1][k]<<endl;
					if (dp2[i+1][k]==-1) continue;
					if (ret==-1) ret = dp2[i+1][k]+abs(p[i]-j)*h[i];
						else ret = min(ret, dp2[i+1][k]+abs(p[i]-j)*h[i]);
				}
				if (dp2[i][j]==-1) dp2[i][j]=ret;
					else if (ret!=-1) dp2[i][j]=min(ret,dp2[i][j]);
				//if (i==3) cout<<dp[i][j]<<" ";
			}
		}

		int ans=-1;
		for (int i=1;i<=n;i++)
			if (h[i]==mh){
					if (dp[i][p[i]]!=-1)
						if (ans==-1) ans=dp[i][p[i]];
							else ans=min(ans,dp[i][p[i]]);
				//cout<<i<<endl;
			}
		for (int i=1;i<=n;i++)
			if (h[i]==mh){
					if (dp2[i][p[i]]!=-1)
						if (ans==-1) ans=dp2[i][p[i]];
							else ans=min(ans,dp2[i][p[i]]);
				//cout<<i<<endl;
			}
 		printf("Case #%d: %d\n", ti, ans);
	}
	return 0;
}
