#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=400010;
int h[N],e[M],ne[M],idx;
int din[N];
int dout[N];
bool st[M];
int cnt;
int type;
int ans[M];
int p[N];
void add(int a,int b)
{
    e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void dfs(int u)
{
    //cout<<u<<endl;
    for(int &i=h[u];~i;)
    {
        int tmp=i;
        if(st[i])
        {
            i=ne[i];
            continue;
        }
       st[i]=1;
       if(type==1)
       st[i^1]=1;
       int j=e[i];
       dfs(j);
       if(type==2)
       ans[++cnt]=tmp+1;
       else
       {
           //cout<<tmp<<endl;
           int t=(tmp)/2+1;
           if(tmp&1) t=-t;
           ans[++cnt]=t;
       }

    }
}
int main()
{
    memset(h,-1,sizeof h);
    cin>>type;
    int n,m;
    cin>>n>>m;
    for(int i=0;i<m;i++)
    {
        int a,b;
        cin>>a>>b;
        add(a,b);
        if(type==1)
        {
            add(b,a);
        }
        din[b]++;
        dout[a]++;
    }
    if(type==1)
    for(int i=1;i<=n;i++)
    {
        if(din[i]+dout[i]&1)
        {
          //  cout<<din[i]<<" "<<dout[i]<<" "<<i<<endl;
            cout<<"NO"<<endl;
            return 0;
        }
    }
    else
    {
        for(int i=1;i<=n;i++)
        if(din[i]!=dout[i])
        {
            cout<<"NO"<<endl;
            return 0;
        }
    }

    for(int i=1;i<=n;i++)
    if(h[i]!=-1)
    {
        dfs(i);
        break;
    }


     if(cnt!=m)
    {
        cout<<"NO"<<endl;
        return 0;
    }



    cout<<"YES"<<endl;
    for(int i=cnt;i>=1;i--)
    cout<<ans[i]<<" ";
    cout<<endl;
    return 0;
}