//============================================================================
// Author      : Bissenov Anuar
//============================================================================
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define run_faster ios::sync_with_stdio (false); cin.tie (0); cout.tie (0); ios_base::sync_with_stdio(0); cin.tie(nullptr);
#define F first
#define S second
#define emb emplace_back
#define pii pair<int,int>
#define all(v) (v.begin(),v.end())
#define rall(v) (v.rbegin(),v.rend())
using namespace std;

long double bp( double r, int p ) {
	if( p == 0 ) return 1;
	if( p&1 ) return bp(r,p-1)*r;
	double b = bp(r,p>>1);
	return b*b;
}

signed main()
{
    run_faster;
//	#ifndef ONLINE_JUDGE
//        freopen( "inverse.in" , "r" , stdin );
//        freopen( "inverse.out" , "w" , stdout );
//	#endif

    long long n, m;
    cin >> n >> m;
    long double rq;
    cin >> rq;

    pair<ll,ll> a[n+1];
    for( int i = 1; i <= n; i++ ) {
    	cin >> a[i].F >> a[i].S;
    }
    sort(a+1,a+n+1);

    unordered_map<ll,long double> dd;
    for(int i = 1; i <= n; i++ ) {
    	if( i == 1 ) {
    		dd[a[i].F] = rq*a[i].S;
    	}
    	else {
    		dd[a[i].F] = dd[a[i-1].F] * bp((1-rq),a[i].F-a[i-1].F) + a[i].S*rq;
    	}
    }
    while( m-- ) {
    	ll q;
    	cin >> q;

    	int l = 1, r = n, pos = 0;
    	while( l<=r ) {
    		int mid = l+r >> 1;

    		if( a[mid].F <= q ) {
    			l = mid+1;
    			pos = mid;
    		}
    		else {
    			r = mid-1;
    		}
    	}
    	if( pos == 0 ) {
    		cout << "0 ";
    	}
    	else {
    		if( a[pos].F == q ) {
    			cout << dd[a[pos].F] << ' ';
    		}
    		else {
    			cout << fixed << setprecision(6) << dd[a[pos].F] * bp(1-rq,q-a[pos].F) << ' ';
//    			cout << dd[a[pos].F] << " * (" << rq << "/(" << q << '-' << a[pos].F << "))" << "\n";
    		}
    	}
    }

    return 0;
}
