/*!enjoy karo yaar!*/

//CF,CC,AtC,SPOJ: hp1999
//HE: hemant269
//HR: hemant2132

#include<bits/stdc++.h>
using namespace std;

/*-----<Defines>-----*/
#define     int             long long int
#define     fast()          ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define     all(x)          begin(x),end(x)
#define     rz(x)           resize(x)
#define     asn(x,y)        assign(x,y)
#define     mem(a,b)        memset(a,b,sizeof(a))
#define     sz(x)           ((int)size(x))
#define     eb              emplace_back
#define     pb              push_back
#define     pf              push_front
#define     pob             pop_back
#define     pof             pop_front
#define     ins             insert
#define     vi              vector<int>
#define     pii             pair<int,int>
#define     mii             map<int,int>
#define     F               first
#define     S               second
#define     remax(a,b)      a=max(a,b)
#define     remin(a,b)      a=min(a,b)
#define     bitcount(x)     __builtin_popcountll(x)
#define     iceil(n,x)      (((n)-1)/(x)+1)
#define     flush           fflush(stdout)

using ull=unsigned long long;
using ll=long long;
using ld=long double;
/*-----</Defines>-----*/

/*-----<Debugging Stuff>-----*/
string to_string(char s)
{   string res="'''";res[1]=s;return res; }

string to_string(string s)
{   return '"'+s+'"'; }

string to_string(const char* s)
{   return to_string((string)s); }

string to_string(bool b)
{   return (b?"true":"false"); }

template<typename A, typename B>
string to_string(pair<A, B> p)
{   return "("+to_string(p.F)+", "+to_string(p.S)+")"; }

template<typename A>
string to_string(A v)
{
    bool first=1; string res="{";
    for(const auto &x:v)
    {
        if(!first)  res+=", ";
        first=0;
        res+=to_string(x);
    }
    res+="}";
    return res;
}

void debug() { cout<<"\n"; }
template<typename Head, typename... Tail>
void debug(Head H, Tail... T)
{
    cout<<" "<<to_string(H);
    debug(T...);
}

#define show(...) cout << "[" << #__VA_ARGS__ << "]:", debug(__VA_ARGS__)
/*-----</Debugging Stuff>-----*/

/*-----<Mod Operations>-----*/
const int M=1e9+7;
inline int add(int a,int b,int p=M){ a=a+b; if(a>=p) a-=p; return a; }
inline int sub(int a,int b,int p=M){ a=a-b; if(a<0) a+=p; return a; }
inline int mul(int a,int b,int p=M){ a=(a*1ll*b)%p; return a; }
/*-----</Mod Operations>-----*/

/*-----<Constants>-----*/
const ld pi=acos(-1),eps=1e-9;
const ll inf=1e18;
const int N=1;
/*-----</Constants>-----*/

void solve()
{
    int n,m;
    cin>>n>>m;

    if(n%2)
    {
        for(int cur=1;m;--m,++cur)
        {
            cout<<cur<<" "<<n-cur+1<<"\n";
        }

        return;
    }

    int mx=(n-1)/2;
    int split;
    if(mx%2)
        split=mx-1;
    else
        split=mx;

    int l=1,r=split+1;
    for(int i=r-l;i>=2;i-=2)
    {
        if(i<=m)
            cout<<l<<" "<<r<<"\n";

        ++l,--r;
    }

    l=split+2;
    r=l+split+(mx%2?1:-1);
    for(int i=r-l;i>=1;i-=2)
    {
        if(i<=m)
            cout<<l<<" "<<r<<"\n";

        ++l,--r;
    }
}

int32_t main()
{
    fast();

    int t=1;
    //cin>>t;
    for(int z=1;z<=t;++z)
    {
        solve();
        //cout<<"\n";
    }

    return 0;
}



#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;

int main() {
    int N, M;
    cin >> N >> M;
    vector<int> num(N, -1);
    for (int i=0; i<M; i++) {
        int si, ci;
        cin >> si >> ci;
        si--;
        if ((num[si] != -1) && (num[si] != ci)){
            cout << -1;
            return 0;
        }
        num[si] = ci;
    }
    if (N == 1) {
        if (num[0] == -1) {
            cout << 0;
            return 0;
        } else {
            cout << num[0];
            return 0;
        }
    } else {
        for (int j=0; j<N; j++){
            if (j == 0 && num[j] == 0) {
                cout << -1;
                return 0;
            }
            if (j == 0 && (num[j] == -1)){
                num[j] = 1;
            }

            if (num[j] == -1) {
                num[j] = 0;
            }
        }
    }



    // // bool first_val = true;
    // for (int j=0; j<N; j++) {
    //     if ((j == 0) && (num[j] == 0) && (N != 1)){
    //         cout << -1;
    //         return 0;
    //     } else if ((j == 0) && (num[j]==-1)) {
    //         num[j] = 1;
    //     }

    //     // if (num[j] != -1) first_val = false;
    //     // if ((j==0) && (num[j] == -1)) num[j] = 1;
    //     if (num[j] == -1){
    //         num[j] = 0;
    //     }
    // }

    int ans = 0;
    for (int k=0; k<N;k++) {
        ans = ans * 10 + num[k];
    }
    cout << ans << endl;
}