1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int n,p,q,tot[2],u[N],v[N],jl,vis[N];
vector<int>e[N];int ps;
char ans[N*2][2];int x[N*2][2],y[N*2][2];
void dfs(int xx){
    if(vis[xx]==2)return;
    if(!vis[xx]&&xx!=1){
        vis[xx]=1;
        ans[++tot[ps]][ps]='+';
        x[tot[ps]][ps]=1;
        y[tot[ps]][ps]=xx;
    }
    vis[xx]=2;
    for(auto v:e[xx])dfs(v);
    return;
}
void work(int s){
    ps=s;
    memset(vis,0,sizeof(vis));
    cin>>jl;
    for(int i=1;i<=jl;i++){
        cin>>u[i]>>v[i];
        e[u[i]].push_back(v[i]);
        e[v[i]].push_back(u[i]);
        if(u[i]==1)vis[v[i]]=1;
        else if(v[i]==1)vis[u[i]]=1;
    }
    dfs(1);
    for(int i=1;i<=jl;i++)
        if(min(u[i],v[i])>1){
            ans[++tot[ps]][ps]='-';
            x[tot[ps]][ps]=u[i];
            y[tot[ps]][ps]=v[i];
        }
    for(int i=1;i<=n;i++)
        e[i].clear();
    return;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    work(0);
    work(1);
    cout<<tot[0]+tot[1]<<"\n";
    for(int i=1;i<=tot[0];i++)
        cout<<ans[i][0]<<" "<<x[i][0]<<" "<<y[i][0]<<"\n";
    for(int i=tot[1];i;i--){
        if(ans[i][1]=='+')ans[i][1]='-';
        else ans[i][1]='+';
        cout<<ans[i][1]<<" "<<x[i][1]<<" "<<y[i][1]<<"\n";
    }
    return  0;
}