解法
\(l\)を偶奇で2つ取って,\(k\)を動かして \(\ (i+k,i+l-k)\ \) の形で選ぶ.
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
ll n,m;
cin >> n >> m;
rep1(i,m/2){
ans.emplace_back(i%n, (n-i)%n);
}
ll j = m/2 + 1;
ll len = m;
if(m % 2 == 0) len--;
rep(i,ceil(m,2LL)){
assert(len > 0);
ans.emplace_back((i+j)%n, (i+j+len)%n);
len -= 2;
}
// assert(ans.size() == m);
for(auto [i,j]: ans){
cout << i+1 << " " << j+1 << endl;
}
return 0;
}