#include <bits/stdc++.h>
#ifndef ONLINE_JUDGE
#include "debug.h"
#else
#define debug(...)
#endif
#define int long long
#define oo LLONG_MAX >> 2
#define all(x) x.begin(), x.end()
#define allr(x) x.rbegin(), x.rend()
#define pep_Guardiola \
ios::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
using namespace std;
void io()
{
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif
}
struct Node
{
int mx = -oo;
int place = -1;
} NEUTRAL;
struct SegTree
{
int size;
vector<Node> tree;
SegTree(int n)
{
size = 1;
while (size < n)
size *= 2;
tree.resize(2 * size);
}
Node merage(const Node &a, const Node &b)
{
Node res;
if (a.mx >= b.mx)
{
res.mx = a.mx;
res.place= a.place;
}
else
{
res.mx = b.mx;
res.place= b.place;
}
return res;
}
void build(vector<int> &a, int x, int lx, int rx)
{
if (rx - lx == 1)
{
if (lx < a.size())
{
tree[x].mx = 0;
tree[x].place = lx;
}
return;
}
int m = (lx + rx) / 2;
build(a, 2 * x + 1, lx, m);
build(a, 2 * x + 2, m, rx);
tree[x] = merage(tree[2 * x + 1], tree[2 * x + 2]);
}
void update(int i, int v, int x, int lx, int rx)
{
if (rx - lx == 1)
{
tree[x].mx += v;
return;
}
int m = (lx + rx) / 2;
if (i < m)
update(i, v, 2 * x + 1, lx, m);
else
update(i, v, 2 * x + 2, m, rx);
tree[x] = merage(tree[2 * x + 1], tree[2 * x + 2]);
}
// zero based Range Query [l,r)
Node query(int l, int r, int x, int lx, int rx)
{
if (lx >= r || rx <= l)
return NEUTRAL;
if (lx >= l && rx <= r)
return tree[x];
int m = (lx + rx) / 2;
return merage(query(l, r, 2 * x + 1, lx, m), query(l, r, 2 * x + 2, m, rx));
}
void build(vector<int> &a) { build(a, 0, 0, size); }
void update(int i, int v) { update(i, v, 0, 0, size); }
Node query(int l, int r) { return query(l, r, 0, 0, size); }
};
void Guardiola()
{
int n, q;
cin >> n >> q;
vector<int> a(n + 2);
SegTree st(n + 2);
st.build(a);
int last = 1;
for (int i = 1; i <= q; i++)
{
int id, v;
cin >> id >> v;
int prev = st.query(1, n + 1).place;
st.update(id, v);
int cur = st.query(1, n + 1).place;
if (cur != prev)
last = i;
}
cout << last << endl;
}
signed main()
{
pep_Guardiola;
io();
int t = 1;
cin >> t;
while (t--)
Guardiola();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpZm5kZWYgT05MSU5FX0pVREdFCiNpbmNsdWRlICJkZWJ1Zy5oIgojZWxzZQojZGVmaW5lIGRlYnVnKC4uLikKI2VuZGlmCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG9vIExMT05HX01BWCA+PiAyCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGFsbHIoeCkgeC5yYmVnaW4oKSwgeC5yZW5kKCkKI2RlZmluZSBwZXBfR3VhcmRpb2xhICAgICAgICBcCiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsgXAogICAgY2luLnRpZSgwKTsgICAgICAgICAgICAgIFwKICAgIGNvdXQudGllKDApOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIGlvKCkKewojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKfQoKc3RydWN0IE5vZGUKewogICAgaW50IG14ID0gLW9vOwogICAgaW50IHBsYWNlID0gLTE7Cn0gTkVVVFJBTDsKCnN0cnVjdCBTZWdUcmVlCnsKICAgIGludCBzaXplOwogICAgdmVjdG9yPE5vZGU+IHRyZWU7CgogICAgU2VnVHJlZShpbnQgbikKICAgIHsKICAgICAgICBzaXplID0gMTsKICAgICAgICB3aGlsZSAoc2l6ZSA8IG4pCiAgICAgICAgICAgIHNpemUgKj0gMjsKICAgICAgICB0cmVlLnJlc2l6ZSgyICogc2l6ZSk7CiAgICB9CgogICAgTm9kZSBtZXJhZ2UoY29uc3QgTm9kZSAmYSwgY29uc3QgTm9kZSAmYikKICAgIHsKICAgICAgICBOb2RlIHJlczsKICAgICAgICBpZiAoYS5teCA+PSBiLm14KQogICAgICAgIHsKICAgICAgICAgICAgcmVzLm14ID0gYS5teDsKICAgICAgICAgICAgcmVzLnBsYWNlPSBhLnBsYWNlOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXMubXggPSBiLm14OwogICAgICAgICAgICByZXMucGxhY2U9IGIucGxhY2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxpbnQ+ICZhLCBpbnQgeCwgaW50IGx4LCBpbnQgcngpCiAgICB7CiAgICAgICAgaWYgKHJ4IC0gbHggPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChseCA8IGEuc2l6ZSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0cmVlW3hdLm14ID0gMDsKICAgICAgICAgICAgICAgIHRyZWVbeF0ucGxhY2UgPSBseDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtID0gKGx4ICsgcngpIC8gMjsKICAgICAgICBidWlsZChhLCAyICogeCArIDEsIGx4LCBtKTsKICAgICAgICBidWlsZChhLCAyICogeCArIDIsIG0sIHJ4KTsKICAgICAgICB0cmVlW3hdID0gbWVyYWdlKHRyZWVbMiAqIHggKyAxXSwgdHJlZVsyICogeCArIDJdKTsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShpbnQgaSwgaW50IHYsIGludCB4LCBpbnQgbHgsIGludCByeCkKICAgIHsKICAgICAgICBpZiAocnggLSBseCA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgdHJlZVt4XS5teCArPSB2OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGludCBtID0gKGx4ICsgcngpIC8gMjsKICAgICAgICBpZiAoaSA8IG0pCiAgICAgICAgICAgIHVwZGF0ZShpLCB2LCAyICogeCArIDEsIGx4LCBtKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHVwZGF0ZShpLCB2LCAyICogeCArIDIsIG0sIHJ4KTsKICAgICAgICB0cmVlW3hdID0gbWVyYWdlKHRyZWVbMiAqIHggKyAxXSwgdHJlZVsyICogeCArIDJdKTsKICAgIH0KCiAgICAvLyB6ZXJvIGJhc2VkIFJhbmdlIFF1ZXJ5IFtsLHIpCiAgICBOb2RlIHF1ZXJ5KGludCBsLCBpbnQgciwgaW50IHgsIGludCBseCwgaW50IHJ4KQogICAgewogICAgICAgIGlmIChseCA+PSByIHx8IHJ4IDw9IGwpCiAgICAgICAgICAgIHJldHVybiBORVVUUkFMOwogICAgICAgIGlmIChseCA+PSBsICYmIHJ4IDw9IHIpCiAgICAgICAgICAgIHJldHVybiB0cmVlW3hdOwogICAgICAgIGludCBtID0gKGx4ICsgcngpIC8gMjsKICAgICAgICByZXR1cm4gbWVyYWdlKHF1ZXJ5KGwsIHIsIDIgKiB4ICsgMSwgbHgsIG0pLCBxdWVyeShsLCByLCAyICogeCArIDIsIG0sIHJ4KSk7CiAgICB9CgogICAgdm9pZCBidWlsZCh2ZWN0b3I8aW50PiAmYSkgeyBidWlsZChhLCAwLCAwLCBzaXplKTsgfQogICAgdm9pZCB1cGRhdGUoaW50IGksIGludCB2KSB7IHVwZGF0ZShpLCB2LCAwLCAwLCBzaXplKTsgfQogICAgTm9kZSBxdWVyeShpbnQgbCwgaW50IHIpIHsgcmV0dXJuIHF1ZXJ5KGwsIHIsIDAsIDAsIHNpemUpOyB9Cn07Cgp2b2lkIEd1YXJkaW9sYSgpCnsKICAgIGludCBuLCBxOwogICAgY2luID4+IG4gPj4gcTsKICAgIHZlY3RvcjxpbnQ+IGEobiArIDIpOwogICAgU2VnVHJlZSBzdChuICsgMik7CiAgICBzdC5idWlsZChhKTsKICAgIGludCBsYXN0ID0gMTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHE7IGkrKykKICAgIHsKICAgICAgICBpbnQgaWQsIHY7CiAgICAgICAgY2luID4+IGlkID4+IHY7CiAgICAgICAgaW50IHByZXYgPSBzdC5xdWVyeSgxLCBuICsgMSkucGxhY2U7CiAgICAgICAgc3QudXBkYXRlKGlkLCB2KTsKICAgICAgICBpbnQgY3VyID0gc3QucXVlcnkoMSwgbiArIDEpLnBsYWNlOwogICAgICAgIGlmIChjdXIgIT0gcHJldikKICAgICAgICAgICAgbGFzdCA9IGk7CiAgICB9CiAgICBjb3V0IDw8IGxhc3QgPDwgZW5kbDsKfQoKc2lnbmVkIG1haW4oKQp7CiAgICBwZXBfR3VhcmRpb2xhOwogICAgaW8oKTsKICAgIGludCB0ID0gMTsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgICAgICBHdWFyZGlvbGEoKTsKICAgIHJldHVybiAwOwp9