#include <stdio.h>

static unsigned int x=123456789;
static unsigned int y=362436069;
static unsigned int z=521288629;
static unsigned int w=88675123;

void seed(unsigned int a,unsigned int b,unsigned int c,unsigned int d) {
	if((a|b|c|d)==0)return;
	x=a;y=b;z=c;w=d;
}

unsigned int randint(void) {
	unsigned int t;
	t=(x^(x<<11));
	x=y;y=z;z=w;
	w=(w^(w>>19))^(t^(t>>8));
	return w;
}

int matukisu[271828];

int aru[271828];

int main(void) {
	int N, M;
	int i;
	int gen;
	if (scanf("%d%d", &N, &M) != 2) return 1;
	for (i = 0; i < N; i++) {
		matukisu[i] = i + 1;
	}
	for (gen = 1; ; gen++) {
		int ng = 0;
		for (i = N - 1; i > 0; i--) {
			int pos = (int)(randint() % (i + 1)); /* ごめん */
			int temp = matukisu[pos];
			matukisu[pos] = matukisu[i];
			matukisu[i] = temp;
		}
		for (i = 0; i < M; i++) {
			int tomatu = matukisu[i * 2] - matukisu[i * 2 + 1];
			if (tomatu < 0) tomatu = -tomatu;
			if (aru[tomatu] == gen || aru[N - tomatu] == gen) {
				ng = 1;
				break;
			}
		}
		if (!ng) {
			for (i = 0; i < M; i++) {
				printf("%d %d\n", matukisu[i * 2], matukisu[i * 2 + 1]);
			}
			break;
		}
	}
	return 0;
}

/*

123**321
23**3211
3**32112
**321123
*321123*

NG

7 3のケース
1 6 -> 5 2
2 5 -> 3 4
3 4 -> 1 6

8 3にすると
1 8 -> 7 1
2 7 -> 5 2
3 6 -> 3 5

5が被るのでNG

1 7 -> 6 2
2 6 -> 4 4
3 5 -> 2 6

NG

1 6 -> 5 3
2 5 -> 3 5
3 4 -> 1 7

NG

*/
