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

#define ll long long
#define ld long double
#define fi first
#define se second
#define sz size
#define pb push_back

const int N = 1e5 + 10;

ll n, m;
ld r, ans[N];
pair <ll, ld> a[N];
pair <ll, ld> v[N];
vector<ll> q;

ld bp(ld a, ll n){
    if(n == 0) return 1.0;
    if(n == 1) return a;
    if(n & 1) return a * bp(a, n - 1);
    else{
        ld b = bp(a, n / 2);
        return b * b;
    }
}

int main(){
    cin >> n >> m >> r;
    for(int i = 1; i <= n; i++){
        cin >> a[i].fi >> a[i].se;
    }
    sort(a + 1, a + 1 + n);

    for(int i = 1; i <= n; i++){
        v[i].fi = a[i].fi;
        v[i].se = v[i - 1].se * bp(1 - r, v[i].fi - v[i - 1].fi) + a[i].se * r;
    }
    map<int,int> id;
    for(ll i = 1, x; i <= m; i++){
        cin>>x;
        q.pb(x);
        id[x]=i;
    }
    sort(q.begin(),q.end());
    for(auto i: q){
        pair<ll,ld> d={i,10000000000};
        int ind = lower_bound(v + 1, v + 1 + n, d) - v - 1;
        ans[id[i]] = v[ind].se * bp(1 - r, i - v[ind].fi);
    }

    cout << fixed << setprecision(6);
    for(int i = 1; i <= m; i++){
        cout << ans[i] << ' ';
    }





    return 0;
}
