#include <cstdio>
#define MAXK 1000
int N, K;
int x[MAXK];
int pozicija_r[MAXK], cilj_r[MAXK];
int pozicija_s[MAXK], cilj_s[MAXK];
void rotiraj_redak( int r, int pomak ) {
for( int i = 0; i < K; ++i )
if( pozicija_r[i] == r )
pozicija_s[i] = (pozicija_s[i] + pomak) % N;
}
void rotiraj_stupac( int s, int pomak ) {
for( int i = 0; i < K; ++i )
if( pozicija_s[i] == s )
pozicija_r[i] = (pozicija_r[i] + pomak) % N;
}
int main( void ) {
scanf( "%d%d", &N, &K );
for( int i = 0; i < K; ++i ) {
scanf( "%d%d%d", &x[i], &cilj_r[i], &cilj_s[i] );
--x[i];
--cilj_r[i];
--cilj_s[i];
pozicija_r[i] = x[i] / N;
pozicija_s[i] = x[i] % N;
}
for( int i = 0; i < K; ++i ) {
int pomak_s = cilj_s[i] - pozicija_s[i];
int pomak_r = cilj_r[i] - pozicija_r[i];
if( pomak_s < 0 ) pomak_s += N;
if( pomak_r < 0 ) pomak_r += N;
rotiraj_redak( pozicija_r[i], pomak_s );
rotiraj_stupac( pozicija_s[i], pomak_r );
printf( "%d\n", pomak_s + pomak_r );
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KCiNkZWZpbmUgTUFYSyAxMDAwCgppbnQgTiwgSzsKaW50IHhbTUFYS107CmludCBwb3ppY2lqYV9yW01BWEtdLCBjaWxqX3JbTUFYS107CmludCBwb3ppY2lqYV9zW01BWEtdLCBjaWxqX3NbTUFYS107Cgp2b2lkIHJvdGlyYWpfcmVkYWsoIGludCByLCBpbnQgcG9tYWsgKSB7CiAgIGZvciggaW50IGkgPSAwOyBpIDwgSzsgKytpICkKICAgICAgaWYoIHBvemljaWphX3JbaV0gPT0gciApCiAgICAgICAgIHBvemljaWphX3NbaV0gPSAocG96aWNpamFfc1tpXSArIHBvbWFrKSAlIE47Cn0Kdm9pZCByb3RpcmFqX3N0dXBhYyggaW50IHMsIGludCBwb21hayApIHsKICAgZm9yKCBpbnQgaSA9IDA7IGkgPCBLOyArK2kgKQogICAgICBpZiggcG96aWNpamFfc1tpXSA9PSBzICkKICAgICAgICAgcG96aWNpamFfcltpXSA9IChwb3ppY2lqYV9yW2ldICsgcG9tYWspICUgTjsKfQoKaW50IG1haW4oIHZvaWQgKSB7CiAgIHNjYW5mKCAiJWQlZCIsICZOLCAmSyApOwogICBmb3IoIGludCBpID0gMDsgaSA8IEs7ICsraSApIHsKICAgICAgc2NhbmYoICIlZCVkJWQiLCAmeFtpXSwgJmNpbGpfcltpXSwgJmNpbGpfc1tpXSApOwogICAgICAtLXhbaV07CiAgICAgIC0tY2lsal9yW2ldOwogICAgICAtLWNpbGpfc1tpXTsKICAgICAgcG96aWNpamFfcltpXSA9IHhbaV0gLyBOOwogICAgICBwb3ppY2lqYV9zW2ldID0geFtpXSAlIE47CiAgIH0KCiAgIGZvciggaW50IGkgPSAwOyBpIDwgSzsgKytpICkgewogICAgICBpbnQgcG9tYWtfcyA9IGNpbGpfc1tpXSAtIHBvemljaWphX3NbaV07CiAgICAgIGludCBwb21ha19yID0gY2lsal9yW2ldIC0gcG96aWNpamFfcltpXTsKICAgICAgaWYoIHBvbWFrX3MgPCAwICkgcG9tYWtfcyArPSBOOwogICAgICBpZiggcG9tYWtfciA8IDAgKSBwb21ha19yICs9IE47CgogICAgICByb3RpcmFqX3JlZGFrKCBwb3ppY2lqYV9yW2ldLCBwb21ha19zICk7CiAgICAgIHJvdGlyYWpfc3R1cGFjKCBwb3ppY2lqYV9zW2ldLCBwb21ha19yICk7CgogICAgICBwcmludGYoICIlZFxuIiwgcG9tYWtfcyArIHBvbWFrX3IgKTsKICAgfQoKICAgcmV0dXJuIDA7Cn0K