// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <functional>
#define ll long long
#define ld long double
#define ff first
#define ln "\n"
#define ss second
using namespace std;
using namespace __gnu_pbds;

ld binpow(ld a, ll b){
	if (b==0) return 1.0;
	ld res = binpow(a, b/2);
	res=res*res;
	if (b%2) res*=a;
	return res;
}

void solve(){
	ll n, m; cin >> n >> m;
	ld r; cin >> r;
	vector<pair<ll, ll>> ws(n);
	for (ll i=0; i<n; i++){
		ll u, v; cin >> u >> v;
		ws[i]={u, v};
	}
	sort(ws.begin(), ws.end());
	vector<pair<ll, ll>> qs(m);
	for (ll i=0; i<m; i++){
		ll x; cin >> x;
		qs[i] = {x, i};
	}
	sort(qs.begin(), qs.end());
	vector<pair<ll, ld>> ans(m);
	ll cd=0, cws=0;
	ld cx=0;
	for (ll i=0; i<m; i++){
		ll rd = qs[i].ff;
		// cout << "L: " << rd << ln;
		while (cws<n and ws[cws].ff<=rd){
			ll ecc = ws[cws].ff-cd;
			// cout << ecc << " ";
			cx*=binpow((1.0-r), ecc);
			cx+=(ld)(ws[cws].ss)*r;
			cd=ws[cws].ff;
			// cout << ws[cws].ff << " " << cx << " " << cd << ln;
			cws++;
			
		}
		ll ecc = rd-cd;
		cx*=binpow((1.0-r), ecc);
		cd=rd;
		ans[i] = {qs[i].ss, cx};
	}
	// cout << ln;
	sort(ans.begin(), ans.end());
	for (auto ch:ans) cout << fixed << setprecision(6) << ch.ss << " ";
	cout << ln;
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	ll t=1; 
	// cin >> t;
	while (t--) solve();
}