#include <bits/stdc++.h>
using namespace std;
using ll = long long;
mt19937_64 rnd(time(0));
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()

const ll N = 2e5 + 5;
const ll INF = 1e15;

double binpow(double n, ll p) {
    if (p == 1) return n;
    if (p % 2 == 0) {
        double f = binpow(n, p / 2);
        return f * f;
    }
    return binpow(n, p - 1) * n;
}

void solve() {
    int n, m; cin >> n >> m;
    double r; cin >> r;
    vector<pair<ll, ll> > dw(n + 1);
    vector<ll> d(n + 1);
    for (int i = 0; i < n; i++) {
        cin >> dw[i].F >> dw[i].S;
        d[i] = dw[i].F;
    }
    sort(all(d));
    sort(all(dw));
    n++;

    vector<long double> a(n);
    a[0] = 0;
    for (int i = 1; i < n; i++) {
        a[i] = a[i - 1] * binpow(1 - r, dw[i].F - dw[i - 1].F) + dw[i].S * r;
        //cout << a[i - 1] << " " <<  binpow(1 - r, dw[i].F - dw[i - 1].F) << " " << dw[i].S * r << "  " << a[i] << endl;
        //cout << a[i] << " " ;
    }
    //cout << endl;

    while (m--) {
        int q; cin >> q;
        auto i = upper_bound(all(d), q) - d.begin() - 1;
        //cout << q << " " << i << " " << a[i] <<  endl;
        long double ans = a[i];
        if (q > d[i]) ans *= binpow(1 - r, q - d[i]);
        cout << setprecision(20) << fixed << ans << " ";
    }
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    solve();

    return 0;
}