#include <bits/stdc++.h>
#define in freopen ("input.txt", "r", stdin);
#define out freopen("output.txt", "w", stdout);
#define se second
#define fi first
#define ll long long int
#define ld long double
#define llu unsigned long long int
#define pb push_back
const int val = (2e5) + 5;
const int inf = (1e9) + 7;
double eps = 0.000000001;
using namespace std;
double binpow (double a, int n) {
  double res = 1;
  while (n)
    if (n & 1) {
      res *= a;
      --n;
    }
    else {
      a *= a;
      n >>= 1;
    }
  return res;
}
map<int, double> mp;
void solve()
{
    ll a, b, x = 0, l = 0, ind = 0;
    double c ,ans = 0;
    mp[0] = 0;
    cin >> a >> b >> c;
    int ar[b];
    double dp[b + 1];
    vector <pair <ll, pair<ll, ll>>> vc;
    for(int i = 0; i < a; i ++)
    {
        int d, e;
        cin >> d >> e;
        vc.push_back({d, {e, 1e10}});
    }
    for(int i = 1; i <= b; i ++)
    {
        cin >> ar[b];
        vc.push_back({ar[b], {1e10 , i}});
    }
    sort(vc.begin(), vc.end());
    for(int i = 0; i < a + b; i ++)
    {
        if(vc[i].second.fi == 1e10)
        {
            ans = ans * binpow((1 - c), vc[i].first - ind);
            ind = vc[i].first;
            dp[vc[i].second.second] = ans;
        }
        else
        {
            ans = ans * binpow((1 - c), vc[i].first - ind) + vc[i].second.first * c;
            ind = vc[i].first;
        }
        ///cout << ans << endl;
    }
    for(int i = 0; i < b; i ++)
    {
        cout << fixed << setprecision(6) << dp[i + 1] << " ";
    }
}
int main()
{
    ios_base::sync_with_stdio(0);
    int t = 1;
    //cin >> test;
    while(t --)
    {
        solve();
        cout << endl;
    }
}
