#include <bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int to[N],ne[N],h[N],tot;
int n,m,fa[N],root=1;
int f[N][32],d[N];
int sum[N],ans,k,pr[N];
bool vis[N],st[N],sw[N];
struct node{
int x,y,w;
}a[N];
struct nn{
int x,y;
}op[N];
int get(int a){
if(fa[a]==a)return a;
return fa[a]=get(fa[a]);
}
void add(int x,int y){
++tot;to[tot]=y;ne[tot]=h[x];h[x]=tot;
}
void bfs(){
memset(d,0x3f,sizeof d);
queue<int> q;q.push(root);d[root]=1;d[0]=0;
while(q.size()){
int u=q.front();q.pop();
for(int i=h[u];i;i=ne[i]){
int y=to[i];
if(d[y]>d[u]+1){
d[y]=d[u]+1;
q.push(y);
f[y][0]=u;
for(int i=1;i<=31;i++){
f[y][i]=f[f[y][i-1]][i-1];
}
}
}
}
}
int lca(int a,int b){
if (d[a]<d[b])swap(a,b);
for (int k=31;k>=0;k--)
if(d[f[a][k]]>=d[b])
a=f[a][k];
if(a==b)return a;
for (int k=31;k>=0;k--)
if (f[a][k]!=f[b][k]){
a=f[a][k];
b=f[b][k];
}
return f[a][0];
}
void dfs(int u){
vis[u]=true;
for (int i=h[u];i;i=ne[i]){
int j=to[i];
pr[j]=i;
if (vis[j])continue;
dfs(j);
sum[u]+=sum[j];
}
}
void bbfs(int x,int y){
memset(st,false,sizeof st);
memset(pr,-1,sizeof pr);
queue<int> q;q.push(y);st[y]=true;
while(q.size()){
int u=q.front();q.pop();
if(u==x){
vector<int> v;
int t=x,res=1;
while(t!=-1&&t!=y){
v.push_back(t);
//cout<<t;
t=pr[t];res++;
}v.push_back(y);
cout<<res<<endl;
for(int i=0;i<v.size();i++)cout<<v[i]<<' ';
cout<<endl;
return ;
}
for(int i=h[u];i;i=ne[i]){
int j=to[i];
if(st[j])continue;
st[j]=true;
q.push(j);pr[j]=u;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++){
scanf("%d%d",&a[i].x,&a[i].y);a[i].w=1;
}
root=a[1].x;
for(int i=1;i<=m;i++){
int x=get(a[i].x),y=get(a[i].y);
if(x==y)continue;
add(a[i].x,a[i].y);add(a[i].y,a[i].x);
fa[x]=y;
}
int q;cin>>q;
bfs();
int uuu=0;
for(int i=1;i<=q;i++){
scanf("%d%d",&op[i].x,&op[i].y);
int x=op[i].x,y=op[i].y;
if(!sw[x])uuu++;if(!sw[y])uuu++;
sw[x]=true;sw[y]=true;
int p=lca(x,y);
sum[p]-=2;
sum[x]++;sum[y]++;
}
dfs(root);
for(int i=1;i<=n;i++){
if(sum[i]%2!=0)ans++;
}
if(ans==0){
cout<<"YES"<<endl;
for(int i=1;i<=q;i++){
int x=op[i].x,y=op[i].y;
bbfs(x,y);
}
}else {
cout<<"NO"<<endl;
cout<<min(uuu-ans,ans)<<endl;
}
}```