// Bolatulu
#include <bits/stdc++.h>

typedef long long ll;
typedef unsigned long long ull;
typedef double db;
#define int long long
#define kanagattandirilmagandiktarinizdan ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
#define pb push_back
#define F first
#define S second
#define md (tl+tr)/2
#define TL tl,md,v+v
#define TR md+1,tr,v+v+1

#pragma GCC target( "sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")

using namespace std;

db binpow(db a,db n) {
    if (n==0)
        return (db)1;
    int zz=n;
    if (zz%2!=0)
        return (a * binpow(a,n-1));
    db z=binpow(a,n/2);
    return (z*z);
}

const ll INF = 1e18;
const int N =  1e6+7;
const int M = 1e9+7;
const ll HZ = 1e5;
const int MAX = INT_MAX;
const int MIN = INT_MIN;
const db pi = 3.141592653;
const int P=31;

int n,m;
db r,ans[N];

void solve() {
    cin >> n >> m >> r;
    pair<int, db> a[n + 1];
    pair <int,int> q[m+1];
    for (int i = 1; i <= n; i++)
        cin >> a[i].first >> a[i].second;
    sort(a + 1, a + n + 1);
    for (int i = 1; i <= m; i++)
        cin >> q[i].first, q[i].second=i;
    sort(q + 1, q + m + 1);
    int j=0;
    a[j].first=0, a[j].second=0;
    db sum=0;
    for (int i=1;i<=m;i++) {
        // cout << i << ' ' << j << endl;
        while (j<n and a[j+1].first<=q[i].first) {
            // cout << 1 << endl;
            // cout << a[j].first << ' ' << sum << endl;
            j++, sum *= binpow(1-r, a[j].first - a[j - 1].first), sum += a[j].second * r;
            // cout << sum << endl;
        }
        // cout << 2 << endl;
        // cout << ' ' << q[i].second << ' ' << binpow(1-r,q[i].first-a[j].first) << endl;
        ans[q[i].second]=sum * binpow(1-r,q[i].first-a[j].first);
    }
    cout << fixed << setprecision(10);
    for (int i=1;i<=m;i++)
        cout << ans[i] << ' ';
}
signed main() {
    // freopen("lca.in", "r", stdin);
    // freopen("lca.out", "w", stdout);
    kanagattandirilmagandiktarinizdan
    int test = 1, count = 1;
    // cin >> test;
    while (test--) {
        // cout << "Case " << count << ":\n";
        solve();
        if (test)
            // cout << '\n';
            count++;
    }
    return 0;
}