#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fin(s) freopen(s, "r", stdin);
#define fout(s) freopen(s, "w", stdout);
#define ui unsigned int
#define ull unsigned long long
#define ld long double
#define fi first
#define se second
#define pb push_back
#define pk pop_back
#define pf push_front
#define pt pop_front
ld binpow(int n, ld x) {
    if (n == 1)
        return x;
    ld q = binpow(n / 2, x);
    if (n % 2 == 1) {
        ld res = q * q;
        int y = res * 1000000000;
        res = 1.0 * y / 1000000000;
        res = res * x;
        y = res * 1000000000;
        res = 1.0 * y / 1000000000;
        return res;
    }
    else {
        ld res = q * q;
        int y = res * 1000000000;
        res = 1.0 * y / 1000000000;
        return res;
    }
}
void solve() {
    int n, m;
    cin >> n >> m;
    ld k;
    cin >> k;
    pair < int, int > d[n + 10];
    for (int i = 1; i <= n; ++i)
        cin >> d[i].fi >> d[i].se;
    int q[m + 10];
    for (int i = 1; i <= m; ++i)
        cin >> q[i];
    sort(d + 1, d + 1 + n);
    d[n + 1] = {1e9, 0};
    int r = 0;
    d[0] = {0, 0};
    ld res = 0;
    for (int i = 1; i <= m; ++i) {
        while (r <= n && d[r + 1].fi <= q[i]) {
            res = res * binpow((d[r + 1].fi - d[r].fi), (1 - k)) + 1.0 * d[r + 1].se * k;
            ++r;
        }
        if (d[r].fi != q[i])
            cout << fixed << setprecision(6) << res * (1 - k) << '\n';
        else
            cout << fixed << setprecision(6) << res << '\n';
    }
}
int main() {
    ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
//    fin("input.txt")
//    fout("output.txt")
    int t = 1;
//    cin >> t;
    while (t--)
        solve();
    return 0;
}
/*
3 3
0.5
2 6
3 8
4 10
1 3 5

5 6
0.3333333
1 27
6 27
3 27
4 27
5 27
1 2 3 4 5 6
*/
