#include<bits/stdc++.h>
#define int int64_t

#define pii pair<int,long double>
#define fi first
#define se second

using namespace std;
typedef long double ld;
const int N = 1e5 + 10;

ld bp(ld a,int n){
    ld res = 1;
    if(n == 0)return 1;
    if(n == 1)return a;
    while(n){
        if(n & 1){
            res *= a;
            n -- ;
        }
        n /= 2;
        a *= a;
//        cerr << "! " << a << ' ' << res << '\n';
    }
//    cerr << res << '\n';
    return 1.0 * res;
}

void solve(){
    int n,m;
    cin >> n >> m;
    ld r;
    cin >> r;
    int x = 0;
    vector<pii>a(n);
    for(int i = 0 ;i < n; ++ i){
        cin >> a[i].fi >> a[i].se;
    }

    cout << fixed << setprecision(6);
    sort(a.begin(),a.end());
    vector<pair<int,ld>>pref(n + 1);
    pref[0] = {a[0].fi,a[0].se * r};
//    cout << pref[0].se <<  ' ';
    for(int i = 1 ;i < n; ++ i){
        pref[i].fi = a[i].fi;
        pref[i].se = (pref[i - 1].se * bp((1 - r),a[i].fi - a[i - 1].fi) + r * a[i].se);
//        cout << pref[i].se << ' ';
    }
//    cout << '\n';
//    return;
//    cout << '\n';
    while(m --){
        int x;
        cin >> x;
        pii pr  = {x,0};
        int l = 0 ,R = n - 1,ans = 0;
        while(l <= R){
            int mid = (l + R) >> 1;
            if(pref[mid].fi <= x){
                l = mid + 1;
                ans = mid;
            }
            else R = mid - 1;
        }
        if(pref[ans].fi > x){
            cout << 0 << ' ';
            continue;
        }
        ld BP = bp((1 - r),x - pref[ans].fi);
        cout << pref[ans].se * BP << ' ';
    }

}

int32_t main(){
    #ifdef LOCAL
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif // LOCAL
    ios_base::sync_with_stdio(0);
    cin.tie(0);
//    cout << fixed << setprecision(12) << bp(1 - 0.3333333,2
//) << '\n';
    int Q = 1;
//    cin >> Q;
    while(Q -- )solve();
    return 0;
}
