#include <bits/stdc++.h>
#define pb push_back
#define sz size()

using namespace std;

typedef long long ll;
typedef pair <int, int> pii;
typedef vector <int> vi;
typedef vector <long long> vll;

const int MOD = 1e9 + 7;
const int maxn = 2e5 + 7;

bool cmp(pii a, pii b){
    if(a.first > b.first)return true;
    else if(a.first == b.first){
        if(a.second >= b.second)return false;
        else return true;
    }
    else return false;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, m, q;
    cin >> n >> m >> q;
    vector <pii> uw(n);
    for(int i = 0; i < n; i++){
        cin >> uw[i].second >> uw[i].first;
    }
    vector <int> x(m);
    for(int i = 0; i < m; i++){
        cin >> x[i];
    }
    sort(uw.begin(), uw.end());
    // for(int i = 0; i < n; i++){
    //     cout << uw[i].first << ' ' << uw[i].second << '\n';
    // }
    while(q--){
        int l, r;
        cin >> l >> r;
        l--;
        r--;
        vector <bool> used(m, false);
        int ans = 0;
        for(int i = n - 1; i >= 0; i--){
            int cursz = uw[i].second;
            int curw = uw[i].first;
            int mn = MOD;
            int mn_ind = -1;
            for(int j = 0; j < m; j++){
                if(!used[j] && !(j >= l && j <= r) && x[j] >= cursz){
                    if(mn > x[j]){
                        mn_ind = j;
                        mn = x[j];
                    }
                }
            }
            if(mn_ind != -1){
                ans += curw;
                used[mn_ind] = true;
            }
        }
        cout << ans << '\n';
    }
    return 0;
}
#include <bits/stdc++.h>

using ull = unsigned long long int;
using ll = long long;
using ld = long double;
using pii = std::pair<int,int>;
using pll = std::pair<ll, ll>;
using vi = std::vector<int> ;
using vvi = std::vector<vi> ;
using vll = std::vector<ll>;
using vvll = std::vector<vll>;
using vd = std::vector<double> ;
using vvd = std::vector<vd> ;
using qi = std::queue<int> ;
using vpii = std::vector<std::pair<int, int> >;
using vpll = std::vector<pll>;
using namespace std;

#define rep(i,j) for(int (i)=0;(i)<(j);(i)++)
#define drep(i,j) for(int (i)=(j);(i) >= 0;(i)--)


template<class T1, class T2> inline void chmin(T1 &a, T2 b){if(a > b) a = b;}
template<class T1, class T2> inline void chmax(T1 &a, T2 b){if(a < b) a = b;}
template<class T> inline void pri(T a){cout << a << endl;}
template<class Z> using vec = vector<Z>;
template<class T> using min_priority_queue = priority_queue<T, vector<T>, greater<T>>;

inline void IN(void){
  return;
}

template <typename First, typename... Rest>
void IN(First& first, Rest&... rest){
  cin >> first;
  IN(rest...);
  return;
}

inline void OUT(void){
 cout << endl;
  return;
}

template <typename First, typename... Rest>
void OUT(First first, Rest... rest){
cout << first << " " ; 
OUT(rest...);
   return;
}
const int max_n = 3 * (1e5) + 1;
const int max_m = 83 * (1e5) + 1;
const int INF = int(1e9);
const long long int INFL = (long long int)1e18;

int n,m,k;
string S;
int ans;

void solve()
{
  int N,M,Q; IN(N,M,Q);
  vpii lug(N);
  vi box(M);
  rep(i,N)
  {
    IN(lug[i].second,lug[i].first);
  }
  rep(i,M)IN(box[i]);
  sort(lug.begin(),lug.end());
  reverse(lug.begin(),lug.end());
  bool used[M+1];
  
  rep(_,Q)
  {
    ll ans = 0;
    int l,r;
    IN(l,r);
    l--;
    memset(used,0,sizeof(used));
    for(int i=l;i<r;i++)used[i] = 1;
    rep(i,N)
    {
      int id = -1;
      ll w = INF;
      rep(j,M)
      {
        if(used[j])continue;
        if(lug[i].second <= box[j])
        {
          if(w > box[j])
          {
            w = box[j];
            id = j;
          }
        }
      }
      if(id == -1)
      {
        continue;
      }
      ans += lug[i].first;
      used[id] = 1;
    }
    cout << ans << endl;
  } 
}

signed main (int argc, char* argv[]) 
{
   cin.tie(0);
   ios::sync_with_stdio(false);
   int cases=1;
   //IN(cases);
   while(cases--)solve();
   //pri(ans);
   //for(auto c : ans){cout << c << endl;}
   //cout << fixed << setprecision(15) << ans << endl;
   return 0;
}