#include <bits/stdc++.h>
using namespace std;
int main()
{
	//ввод начало
	long long n,m;
	cin>>n>>m;
	long double k; cin>>k; long double secondk=(1-k);
	long double ks[500];
	for(int i=1; i<500; i++)
	{
		ks[i]=secondk;
		secondk*=secondk;
	}
	pair <long long,long long> day[n];
	map <long long,long double> yes;
	for(int i=0; i<n; i++)
	{
		cin>>day[i].first>>day[i].second;
	}
	sort(day,day+n);
	//ввод конец
	//ответы для дней начало
		yes[day[0].first]=day[0].second*k;
	for(int i=1; i<n; i++)
		yes[day[i].first]=yes[day[i-1].first]*ks[day[i].first-day[i-1].first]+day[i].second*k;
	//ответы для дней конец
	while(m--)
	{
		int ques; cin>>ques;
		if(yes.count(ques))
			cout<<yes[ques]<<" ";
		else
		{
			if(ques<day[0].first)
			{
				cout<<0<<" ";
			}
			else if(ques>day[n-1].first)
			{
				if(ques-day[n-1].first<499)
					cout<<fixed<<setprecision(6)<<yes[day[n-1].first]*ks[ques-day[n-1].first]<<" ";
				else
					cout<<fixed<<setprecision(6)<<yes[day[n-1].first]*ks[499]<<" ";
				
			}
			else
			{
				int l=0,r=n;
				while(r-l>1)
				{
					int mid=(l+r)/2;
					if(day[mid].first<ques)
						l=mid;
					else 
						r=mid;
				}
				if(ques-r<499)
					cout<<fixed<<setprecision(6)<<yes[r]*ks[ques-r]<<" ";
				else
					cout<<fixed<<setprecision(6)<<yes[r]*ks[499]<<" ";
			}
		}
	}
}
