# include <bits/stdc++.h>
# define flash ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
# define ff first
# define ss second
# define pb push_back
# define all(x) x.begin(), x.end()
# define allr(x) x.rbegin(), x.rend()
# define in insert
# define file(s) freopen(s".in", "r", stdin); freopen(s".out", "w", stdout)

typedef long long ll;
typedef double db;
typedef long double ld;
using namespace std;

const int N = 2e5 + 5;
const ll inf = 1e9 + 7;
const ll INF = 1e18;
const db pi = acos(-1.0);

int n, tt = 1, m, q[N];
double r, ans[N];
pair <int, int> p[N];
vector<int>v;

double binpow (double a, int n) {
	if (n == 0)
		return 1;
	if (n % 2 == 1)
		return binpow (a, n-1) * a;
	else {
		double b = binpow (a, n/2);
		return b * b;
	}
}

void solve(){
	cin >> n >> m >> r;
	v.pb(0);
	for (int i = 1; i <= n; i++){
		cin >> p[i].ff >> p[i].ss;
		v.pb(p[i].ff);
	}
	sort(p + 1, p + n + 1);
	sort(v.begin(),v.end());
	for (int i = 1; i <= n; i++){
		double last = 1.0 * ans[i - 1];
		last *= binpow((1 - r), p[i].ff - p[i - 1].ff);
		ans[i] = last + r * p[i].ss;
		//cout << i << ' ' << last << ' ' << ans[i] << '\n';
	}
	for (int i = 1; i <= m; i++){
		cin >> q[i];
		
		int mid=upper_bound(v.begin(),v.end(),q[i])-v.begin()-1;	
	
		double last = ans[mid];
		last *= binpow((1 - r), q[i] - p[mid].ff);
		cout << last << ' ';
	}
}

int main (){
	//file(s);
	flash;
	//cin >> tt;
	while (tt--){
		solve();
	}
	return 0;
}

