#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using ld = long double;

struct event
{
    ll d, w;
    bool is_check;
    bool operator <(const event &other)
    const
    {
        if(d == other.d)
        {
            return is_check < other.is_check;
        }
        return d < other.d;
    }
};

ld binpow(ld a, ll n)
{
    if(n == 0)
    {
        return 1;
    }
    ld x = binpow(a, n / 2);
    if(n % 2 == 1)
    {
        return x * x * a;
    }
    return x * x;
}

void solve()
{
    ll n, m;
    cin >> n >> m;
    ld r;
    cin >> r;
    ll d, w;
    vector <event> events;
    for(ll i = 0; i < n; i++)
    {
        cin >> d >> w;
        events.push_back({d, w, false});
    }
    for(ll i = 0; i < m; i++)
    {
        cin >> d;
        events.push_back({d, 0, true});
    }
    sort(events.begin(), events.end());
    ld cnt = 0;
    ll day = 0;
    for(ll i = 0; i < events.size(); i++)
    {
        cnt *= binpow(1 - r, events[i].d - day);
        if(events[i].is_check)
        {
            cout << cnt << ' ';
        }
        day = events[i].d;
        cnt += events[i].w * r;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed << setprecision(8);
    //freopen("input.txt", "r", stdin);

    int t = 1;
    //cin >> t;
    while (t--)
        solve();
}
