/*#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")*/
#include <bits/stdc++.h>
#include <iomanip>
#define ll long long
//#define int long long
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define str string
#define pii pair<int,int>
#define sz(x) x.size()
#define all(x) x.begin(), x.end()
#define vi vector<int>
#define mii map<int,int>
#define mll map<ll,ll>
#define yes cout<<"YES\n";
#define no cout<<"NO\n";
#define yess cout<<"Yes\n";
#define noo cout<<"No\n";
using namespace std;

const str num1[10]={"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"};
const int num2[10]={0,1,2,3,4,5,6,7,8,9};

const int dx[8] = {1, -1, 0, 0,1,-1,-1,1};
const int dy[8] = {0, 0, -1, 1,1,-1,1,-1};

const ll mod=1000000007;
const ll oo=9000000000000000000;

ll binmod(int n,int m){if(m==0){return 1;}if(m==1){return n;}if(m%2==1){return n*(binmod(n,m-1))%mod;}int c=binmod(n,m/2);return c*c%mod;}
double bin(double n,int m){
    if(m==0){
        return 1;
        
    }if(m==1){
        return n;
        
    }if(m%2==1){
        return n*(bin(n,m-1));
        
    }
    double c=bin(n,m/2);
    return c*c;
    
}

map<int,double>pp;
map<int ,int >a;

void solve(){
  int n,q;
  cin>>n>>q;
  double r;
  cin>>r;
  vi v;
  for(int i=1;i<=n;i++){
    int c;
    cin>>c;
    cin>>a[c];
    v.pb(c);
  }
  sort(v.begin(),v.end());
  int pos=0;
  double x=0;
  for(int i=0;i<v.size();i++){
      //cout<<1-r<<" "<<v[i]<<" "<<pos<<"\n";
      //cout<<fixed<<x<<" "<<((bin(double(1)-r,v[i]-pos)))<<"\n";
    pp[v[i]]=x/(1/(bin((1-r),v[i]-pos)));
    pp[v[i]]+=a[v[i]]*r;
    x=pp[v[i]];
    pos=v[i];
    //cout<<fixed<<pp[v[i]]<<"\n";
  }
  for(int i=1;i<=q;i++){
    int t;
    cin>>t;
    if(pp[t]!=0){
        cout<<fixed<<setprecision(6)<<pp[t]<<" ";
    }
    else if(v[0]>t){
        cout<<0<<" ";
    }
    else{
        int l=0,rr=n-1;
        while(rr-l>1){
            int m=(l+rr)/2;
            if(v[m]>t){
                rr=m;
            }
            else{
                l=m;
            }
        }
        //cout<<r<<" "<<v[r]<<" "<<(1/(bin((1-r),t-v[rr])))<<" \n";
        if(v[rr]<=t){
            pp[t]=pp[v[rr]]/(1/(bin((1-r),t-v[rr])));
            //pp[t]+=a[v[i]]*r;
            cout<<fixed<<setprecision(6)<<pp[t]<<" ";
        }
        else{
            pp[t]=pp[v[l]]/(1/(bin((1-r),t-v[l])));
            //pp[t]+=a[v[i]]*r;
            cout<<fixed<<setprecision(6)<<pp[t]<<" ";
        }
    }
  }
}

signed main(){
  //ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  //srand( time(0));
  //rand()
  //freopen("sum.in", "r", stdin);
  //freopen("sum.out", "w", stdout);
    int tests=1;
    //cin>>tests;
    for(int i=1;i<=tests;i++){
    //cout<<"TEST CASE : "<<i<<"\n";
    solve();
  }
}
