#include <bits/stdc++.h>

#define mp make_pair
#define ull unsigned long long
#define ll long long
#define dl long double
#define forn(i, n) for(ll i = 0; i < n; i++)
using namespace std;

dl fast_pow(dl a, ll b) {
    if (b == 0) return 1.0;
    if (b == 1) return a;
    if (b % 2 == 0) return pow(fast_pow(a, b / 2), 2);
    else return fast_pow(a, b - 1) * a;
}

void start() {
    ll n, m;
    cin >> n >> m;
    dl r;
    cin >> r;

    vector<pair<ll, dl>> dw;
    forn(i, n) {
        ll tmp;
        dl tmp2;
        cin >> tmp >> tmp2;
        dw.push_back(mp(tmp, tmp2));
    }

    sort(dw.begin(), dw.end());

    vector<pair<ll, dl>> dx;
    dx.push_back(mp(dw[0].first, dw[0].second * r));
    for(ll i = 1; i < n; i++) {
        dx.push_back(mp(dw[i].first, dw[i].second * r + dx[i - 1].second * fast_pow((1.0 - r), dw[i].first - dw[i - 1].first)));
    }

    forn(i, m) {
        ll q;
        cin >> q;
        pair<ll, dl> qp = mp(q, LONG_LONG_MAX);
        auto ansp = lower_bound(dx.begin(), dx.end(), qp);
        if (ansp == dx.begin()) {
            cout << 0 << "\n";
            continue;
        }
        ansp--;
        pair<ll, dl> ans = *ansp;
        ll days = q - ans.first;
        dl ansq = ans.second * fast_pow((1.0 - r), days);

        cout << fixed << setprecision(6) << ansq << "\n";
    }
}

int main() {
    int t = 1;
    //cin >> t;
    while(t--)
        start();
}