#include<bits/stdc++.h>
#pragma GCC target( "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
using namespace std;
#define int long long
#define y1 cheza
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N=2e5+1000;
const int M=1e4;
const int mod=1e9+7;
const int INF=1e18;
const int dx[]={1,-1,0,0};
const int dy[]={0,0,-1,1};
const long double eps=1e-6;
int n, m, q[N];
pair <int, int> d[N];
long double r;
long double binpow (long double a, int p) {
    if (p == 0) return 1;
    if (p % 2 == 0) return binpow (a, p / 2) * binpow (a, p / 2);
    return binpow (a, p - 1) * a;
}
void test(){
    cin >> n >> m >> r;
    long double l = 1 - r;
    for (int i = 1; i <= n; i++) {
        cin >> d[i].first >> d[i].second;
    }
    sort (d + 1, d + n + 1);
    for (int i = 1; i <= m; i++) {
        cin >> q[i];
    }
    sort (q + 1, q + m + 1);
    q[m + 1] = INF;
    d[0].first = 1;
    int id = 1;
    double ans = 0;
    cout << fixed << setprecision (12);
    for (int i = 1; i <= m; i++) {
        while (id <= n && d[id].first <= q[i]) {
            ans = ans * binpow (l, d[id].first - d[id - 1].first);
            ans += r * d[id].second;
            id++;
        }
        cout << ans * binpow (l, q[i] - d[id - 1].first) << " ";
    }
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    // cout.tie(nullptr);
    long long t2=1;
    for(int i=1;i<=t2;i++){
        test();
    }
    
    return 0;

}
/*
temmie luck

*/
