#include <iostream>
#define LOCAL
using namespace std;
int main() {
#ifdef LOCAL
freopen("data.in", "r", stdin);
#endif
long long light[3] = {0}, ans = 0, n, pos, sum; // 注意初始化的变量要赋值0
// 红绿灯的变化范围为红绿黄 三色循环
while(scanf("%lld%lld%lld", &light[0], &light[2], &light[1])==3){
scanf("%lld", &n);
sum = (light[0]+light[1]+light[2]);
while(n--){
long long k,t;
scanf("%lld%lld",&k,&t);
if (k==0){
ans+=t;
}else{
if(k==1){
// 起始位置 此路段的灯为红 在light数组下标为0
k=0;
}else if(k==3){
// 灯为绿色 在light数组下标为1
k=1;
}
// 模拟时间流逝
// 将红绿黄灯刻在时间线上,时间线坐标起始位置是红灯开始的。 pos 就是 light[k]-t 加上运动的总时间
// pos%sum 即为最后循环一周所在坐标 方便寻找状态
pos = (light[k]-t + ans)% sum;
// 寻找pos在哪个状态
while(pos>light[k]){
pos = pos-light[k];
k = (k+1)%3; // 三个灯循环后移
}
// 如果当前模拟到的状态为红灯 等待一段时间
if(k==0){
ans += light[k]-pos;
}else if (k==2){
// 黄灯
ans += light[k]-pos + light[0];
}
}
}
printf("%lld", ans);
}
return 0;
}