#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
const int MAXN = 100010;
int spos[MAXN],epos[MAXN],sum[MAXN],w[MAXN];
int n,f[MAXN],index;
bool vis[MAXN];
struct edge
{
    int u,v,w;
    edge(int a=0,int b=0,int c=0):u(a),v(b),w(c){}
    bool friend operator<(const edge a,const edge b)
    {
        return a.w<b.w;
    }
};
priority_queue<edge> Q;
vector<int> g[MAXN];
void init()
{
    for(int i=0;i<=n;i++)
    {
        f[i]=i;
        w[i]=sum[i]=0;
        g[i].clear();
    }
}
int find(int x)
{
    if(x==f[x])
        return f[x];
    f[x]=find(f[x]);
    return f[x];
}
void Union(int x,int y)
{
    int a=find(x);
    int b=find(y);
    if(a==b) return ;
    f[a]=b;
    g[x].push_back(y);
    g[y].push_back(x);
}
void Kruskal()
{
    while(!Q.empty())
    {
        Union(Q.top().u,Q.top().v);
        Q.pop();
    }
}
int lowbit(int x)
{
    return x&(-x);
}
void modify(int x,int add)
{
    while(x<=n)
    {
        sum[x]+=add;
        x+=lowbit(x);
    }
}
int get_sum(int x)
{
    int ret=0;
    while(x!=0)
    {
        ret+=sum[x];
        x-=lowbit(x);
    }
    return ret;
}
void dfs(int u)
{
    spos[u]=index;
    vis[u]=true;
    for(int i=0;i<g[u].size();i++)
    {
        int v=g[u][i];
        if(!vis[v])
        {
            index++;
            dfs(v);
        }
    }
    epos[u]=index;
}
int main()
{
    int m,k,a,b,c;
    char str[5];
    while(scanf("%d %d",&n,&m)==2)
    {
        init();
        while(m--)
        {
            scanf("%d %d %d",&a,&b,&c);
            Q.push(edge(a,b,c));
        }
        Kruskal();
        index=1;
        memset(vis,false,sizeof(vis));
        dfs(1);
        scanf("%d",&m);
        while(m--)
        {
            scanf("%s",str);
            if(str[0]=='G')
            {
                scanf("%d %d",&a,&c);
                modify(spos[a],c);
                w[a]+=c;
            }
            else if(str[0]=='C')
            {
                scanf("%d",&a);
                modify(spos[a],-w[a]);
                w[a]=0;
            }
            else {
                scanf("%d",&a);
                int ans=get_sum(epos[a])-get_sum(spos[a]-1);
                printf("%d\n",ans);
            }
        }
    }
    return 0;
}