#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
string s;
int power(int l){
	int m=1;
	for(int i=1;i<=l;i++){
		m*=2;
	}
	return m;
}
int revi(char a,char b){
	if(a=='P'&&b=='R'){
		return a;
	}
	if(a=='P'&&b=='S'){
		return b;
	}
	if(a=='S'&&b=='P'){
		return a;
	}
	if(a=='S'&&b=='R'){
		return b;
	}
	if(a=='R'&&b=='S'){
		return a;
	}
	return b;
}
void last10(){
	char c[10005];
	int m=power(k);
	for(int i=1;i<=m;i++){
		if(i%n==0){
			c[i]=s[n-1];
		}
		else{	
			c[i]=s[i%n-1];
		}
	}
	while(m!=1){
		m/=2;
		for(int i=1;i<=m;i++){
			c[i]=revi(c[i*2-1],c[i*2]);
		}
	}
	cout<<c[1];
}
signed main() {
	cin>>n>>k;
	cin>>s;
	if(k>10){
		char c[205];
		for(int i=1;i<=2*n;i++){
			if(i%n==0){
				c[i]=s[n-1];
			}
			else{	
				c[i]=s[i%n-1];
			}
		}
		while(k>10){
			k--;
			for(int i=1;i<=n;i++){
				c[i]=revi(c[i*2-1],c[i*2]);
			}
			for(int i=1;i<=2*n;i++){
				if(i%n==0){
					c[i]=c[n];
				}
				else{	
					c[i]=c[i%n];
				}
			}
		}
		for(int i=1;i<=n;i++){
			s[i-1]=c[i];
		}
	}
	last10();
	

	return 0;
}

#include <bits/stdc++.h>
#define rep(i,n) for (int i=0;i<(n);i++)
#define rep1(i,n) for (int i=1;i<(n);i++)
using namespace std;
using ll = long long;
using P = pair<int, int>;

bool my_compare(pair<int, int> a, pair<int, int> b) {
    // 基本はfirstで比較
    if(a.first != b.first){
        // return a.first < b.first; // 昇順
        return a.first > b.first; // 降順
    }

    // それ以外はsecondで比較
    if(a.second != b.second){
        return a.second < b.second;
    }else{
        // どちらも同じ
        return true;
    }
}

int main() {
  int n, m, q;
  cin >> n >> m >> q;
  vector<P> item(n);
  vector<int> x(m);
  rep(i,n){
    int w,v;
    cin >> w >> v;
    item[i].second = w;
    item[i].first = v;
  }
  rep(i,m){
    cin >> x[i];
  }
  // sort(item.begin(), item.end(), my_compare);
  sort(item.begin(), item.end(), [](P a, P b){
   return a.first>b.first || (a.first ==b.first  && a.second<b.second);
  });

  // for(int i=0; i<item.size(); i++){
  //   cout << item[i].first << ' ' << item[i].second << endl;
  // }

  rep(i,q){
    int l, r;
    cin >> l >> r;
    vector<int> box(m);
    box = x;
    for(int k=l-1;k<r;k++){
      box[k] = 0;
    }
    ll sum = 0;
    sort(box.begin(),box.end());
    rep(j,n){
      int value = item[j].first;
      int weight = item[j].second;
      rep(k,m){
        if(box[k] >= weight){
          box[k] = 0;
          sum += value;
          break;
        }
      }
    }
    cout << sum << endl;
  }  
  // 
  
  return 0;
}