#include <bits/stdc++.h>

using namespace std;

#define int long long
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define pb push_back
#define ll long long
#define ff first
#define ss second
#define endl '\n'
#define fr first
#define sc second
#define ld long double

template <typename _T>
bool chmin(_T &a, const _T &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <typename _T>
bool chmax(_T &a, const _T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}

const int mod = 998244353;
const int MOD = 1e9 + 7;
const int inf = 1e9 + 7;
const int INF = 1e18 + 7;
const double eps = 1e-6;
const double EPS = 1e-9;
const int N = 2e5 + 5 ;

ld binpow(ld a,ll n){
  if(n==0) return 1;
  ld b=binpow(a,n/2);
  if(n%2==1) return b*b*a;
  return b*b;
}
void solve() {
  ll n,m,i;
  cin>>n>>m;
  map<ll,ll> mp;
  vector<ll> v;
  vector<pair<ld,ll>> comp;
  ld r;
  cin>>r;
  ll a,b;
  for(i=0;i<n;i++){
    cin>>a>>b;
    comp.pb({a,(ld)b});
    mp[a]++;
  }
  comp.pb({0,0});
  for(i=0;i<m;i++){
    cin>>a;
    v.pb(a);
    if(mp[a]==0)comp.pb({a,0ll});
  }
  sort(all(comp));
  ld ans[n+m+5];
  ans[0]=0;
  for(i=1;i<(ll)comp.size();i++){
    ans[i]=ans[i-1]*binpow((1.-r),comp[i].fr-comp[i-1].fr)+r*comp[i].sc;
  }
  mp.clear();
  for(auto j : v) mp[j]++;
  for(i=0;i<(ll)comp.size();i++){
    if(mp[comp[i].fr])cout<<fixed<<setprecision(8)<<ans[i]<<' ';
  }
  cout<<endl;
}

signed main() {
  //ios::sync_with_stdio(false);
  //cin.tie(nullptr);
  int tt = 1;
  //cin >> tt;
  while(tt--) {
    solve();
  }
}
