#include <bits/stdc++.h>
using namespace std;

// Type alias
using ll=long long;
using ld=double;

using pi=pair<int,int>;
using pll=pair<ll,ll>;
using pld=pair<ld,ld>;
using ti3=tuple<int, int, int>;

using vi=vector<int>;
using vll=vector<ll>;
using vld=vector<ld>;
using vpi=vector<pi>;
using vpll=vector<ll>;
using vpld=vector<ld>;
using vti3=vector<ti3>;

// Constants
const double EPS = 1e-9;
const int inf = numeric_limits<int>::max() / 2;
const ll mod = 1e9+7;

// Macro
#define rep(i,n) for(int i=0;i<int(n);++i)
#define rrep(i,n) for(int i=int(n-1);i>=0;--i)
#define REP(i,a,b) for(int i=int(a);i<int(b);++i)
#define RREP(i,a,b) for(int i=int(b-1);i>=int(a);--i)
#define SHOW(a) cout << #a << " = " << a << endl
#define ARR(a,n) for(int i=0;i<int(n);++i) cout << #a << "[" << i << "]" << " = " << a[i] << endl

#define ALL(a) a.begin(),a.end()

// Funtcions
ll pow(ll base, ll i, ll mod){
  ll a = 1;
  while(i){
    if (i & 1) {
      a *= base;
      a %= mod;
    }
    base *= base;
    base %= mod;
    i >>= 1;
  }
  return a;
}
ll gcd(ll a, ll b){
  while(b){
    ll c = a % b;
    a = b;
    b = c;
  }
  return a;
}
ll lcm(ll a, ll b){
  return a / gcd(a, b) * b;
}
template<typename T> bool chmin(T& a, const T& b) {
  if (a > b) return a = b, true; else return false;
}

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


void solve(){
  int n, m, q;
  cin >> n >> m >> q;
  pi wv[55];
  pi x[55];
  rep(i, n) {
    int w, v;
    cin >> w >> v;
    wv[i] = make_pair(v, w);
  }
  rep(i, m) {
    int t;
    cin >> t;
    x[i] = make_pair(t, i);
  }

  sort(wv, wv + n);
  sort(x, x + m);

  rep(i, q) {
    int l, r;
    cin >> l >> r;
    l--; r--;
    bool used[55] = {};
    rep(i, m) {
      if(l <= x[i].second && x[i].second <= r) {
        used[i] = true;
      }
    }

    int ans = 0;
    rrep(i, n) {
      int v = wv[i].second;
      rep(j, m) {
        if(x[j].first >= v && !used[j]) {
          ans += wv[i].first;
          used[j] = true;
          break;
        }
      }
    }
    cout << ans << endl;
  }
}

int main(){
// FastIO
//ios_base::sync_with_stdio(false);
cin.tie(NULL);
  solve();
  return 0;
}
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

#define mp make_pair
#define fr first
#define sc second

int n,m,q;
int w[52],v[52];
int x[52];

int main(){
	scanf("%d%d%d",&n,&m,&q);
	for(int i=0;i<n;i++){
		scanf("%d%d",&w[i],&v[i]);
	}
	for(int i=0;i<m;i++)scanf("%d",&x[i]);
	vector<pair<int,int>> vec;
	for(int i=0;i<n;i++){
		vec.push_back(mp(v[i],w[i]));
	}
	sort(vec.begin(),vec.end());
	reverse(vec.begin(),vec.end());
	for(int i=0;i<n;i++){
		v[i]=vec[i].fr;
		w[i]=vec[i].sc;
	}
	
	for(;q>0;q--){
		int l,r;
		scanf("%d%d",&l,&r);
		vector<int> X;
		for(int i=0;i<m;i++){
			if(l-1<=i&&i<=r-1){}
			else X.push_back(x[i]);
		}
		sort(X.begin(),X.end());
		bool used[52]; memset(used,false,sizeof used);
		int ret=0;
		for(int i=0;i<n;i++){
			for(int j=0;j<X.size();j++){
				if(!used[j]&&X[j]>=w[i]){
					used[j]=true;
					ret+=v[i];
					break;
				}
			}
		}
		cout<<ret<<endl;
	}
}