#include <bits/stdc++.h>
#define x first
#define y second
#define siz(v) ((int)(v).size())
#define all(v) begin((v)), end(v)
#define filter(v) sort(all(v)); v.resize(unique(all(v)) - begin(v))
#define BIT(x, i) (((x) >> (i)) & 1)
#define MASK(i) (1LL << (i))
#define dbg(x) "[" #x " = " << x << "]"
using namespace std;
typedef pair<int, int > ii;
typedef pair<long long, int > lli;
bool M1;
const int infINT = 1e9 + 123;
const long long inf = 1e18 + 12;
const int mod = 1000000007;
const int dx[4] = {-1, 0, 0, 1};
const int dy[4] = {0, -1, 1, 0};
template<class X, class Y> bool minimize(X &x, const Y &y){return x > y ? x = y, 1: 0;}
template<class X, class Y> bool maximize(X &x, const Y &y){return x < y ? x = y, 1: 0;}
void add(int &a, const int &b){
a += b;
if (a >= mod) a -= mod;
}
int bin_pow(int a, int k){
int res = 1;
while(k){
if (k & 1) res = 1LL * res * 1LL * a % mod;
k >>= 1; a = 1LL * a * 1LL * a % mod;
}
return res;
}
const int MAXK = 2e5 + 5;
long long X, Y, numTree, res[MAXK];
pair<long long, long long> tree[MAXK];
vector<int > pos;
vector<long long > comp;
struct segmentTree{
int n;
vector<long long > mx;
segmentTree(int _n = 0): n(_n){
mx.assign(n << 2 | 1, 0);
}
void update(int id, int l, int r, int u, int v, long long x){
if (l > r || l > v || r < u || u > v) return;
if (l >= u && r <= v) return mx[id] = max(mx[id], x), void();
int m = (l + r) >> 1;
update(id << 1, l, m, u, v, x);
update(id << 1 | 1, m + 1, r, u, v, x);
}
void update(int u, int v, long long x){
update(1, 1, n, u, v, x);
}
long long get(int id, int l, int r, int p){
if (l == r) return mx[id];
int m = (l + r) >> 1;
if (p <= m) return max(mx[id], get(id << 1, l, m, p));
else return max(mx[id], get(id << 1 | 1, m + 1, r, p));
}
long long get(int p){
return get(1, 1, n, p);
}
};
void input(){
cin >> X >> Y >> numTree;
for(int i = 1; i <= numTree; i++){
double x, y; cin >> x >> y;
tree[i].x = round(x * 2);
tree[i].y = round(y * 2);
comp.push_back(tree[i].y);
pos.push_back(i);
}
}
long long getPos(const long long &pos) {
return lower_bound(all(comp), pos) - begin(comp) + 1;
}
bool cmp(const int &a, const int &b){
return tree[a] < tree[b];
}
void solve(){
filter(comp);
sort(all(pos), cmp);
segmentTree it(siz(comp));
for(int i: pos) {
long long len = tree[i].x - it.get(getPos(tree[i].y));
int L = lower_bound(all(comp), tree[i].y - len) - begin(comp) + 1;
int R = upper_bound(all(comp), tree[i].y + len) - begin(comp);
res[i] = len;
it.update(L, R, tree[i].x + len);
}
for(int i = 1; i <= numTree; i++)
cout << res[i] << '\n';
}
bool M2;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define task "test"
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int t = 1;
// cin >> t;
while(t--){
input();
solve();
}
cerr << (1.0 * clock()) / CLOCKS_PER_SEC << ".s\n";
cerr << (&M2 - &M1) / 1048576 << " mb\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAogCiNkZWZpbmUgeCBmaXJzdCAKI2RlZmluZSB5IHNlY29uZCAKIAojZGVmaW5lIHNpeih2KSAoKGludCkodikuc2l6ZSgpKSAKI2RlZmluZSBhbGwodikgYmVnaW4oKHYpKSwgZW5kKHYpIAojZGVmaW5lIGZpbHRlcih2KSBzb3J0KGFsbCh2KSk7IHYucmVzaXplKHVuaXF1ZShhbGwodikpIC0gYmVnaW4odikpIAogCiNkZWZpbmUgQklUKHgsIGkpICgoKHgpID4+IChpKSkgJiAxKSAKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKSAKIAojZGVmaW5lIGRiZyh4KSAiWyIgI3ggIiA9ICIgPDwgeCA8PCAiXSIgCiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgCiAKdHlwZWRlZiBwYWlyPGludCwgaW50ID4gaWk7IAp0eXBlZGVmIHBhaXI8bG9uZyBsb25nLCBpbnQgPiBsbGk7IAogCmJvb2wgTTE7IApjb25zdCBpbnQgaW5mSU5UID0gMWU5ICsgMTIzOyAKY29uc3QgbG9uZyBsb25nIGluZiA9IDFlMTggKyAxMjsgCmNvbnN0IGludCBtb2QgPSAxMDAwMDAwMDA3OyAKIApjb25zdCBpbnQgZHhbNF0gPSB7LTEsIDAsIDAsIDF9OyAKY29uc3QgaW50IGR5WzRdID0gezAsIC0xLCAxLCAwfTsgCiAKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICZ5KXtyZXR1cm4geCA+IHkgPyB4ID0geSwgMTogMDt9IAp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPiBib29sIG1heGltaXplKFggJngsIGNvbnN0IFkgJnkpe3JldHVybiB4IDwgeSA/IHggPSB5LCAxOiAwO30gCiAKdm9pZCBhZGQoaW50ICZhLCBjb25zdCBpbnQgJmIpeyAKICAgIGEgKz0gYjsgCiAgICBpZiAoYSA+PSBtb2QpIGEgLT0gbW9kOyAKfSAKIAppbnQgYmluX3BvdyhpbnQgYSwgaW50IGspeyAKICAgIGludCByZXMgPSAxOyAKICAgIHdoaWxlKGspeyAKICAgICAgICBpZiAoayAmIDEpIHJlcyA9IDFMTCAqIHJlcyAqIDFMTCAqIGEgJSBtb2Q7IAogICAgICAgIGsgPj49IDE7IGEgPSAxTEwgKiBhICogMUxMICogYSAlIG1vZDsgCiAgICB9IAogICAgcmV0dXJuIHJlczsgCn0gCiAKY29uc3QgaW50IE1BWEsgPSAyZTUgKyA1OyAKIApsb25nIGxvbmcgWCwgWSwgbnVtVHJlZSwgcmVzW01BWEtdOyAKcGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4gdHJlZVtNQVhLXTsgCnZlY3RvcjxpbnQgPiBwb3M7IAp2ZWN0b3I8bG9uZyBsb25nID4gY29tcDsgCiAKc3RydWN0IHNlZ21lbnRUcmVleyAKICAgIGludCBuOyAKICAgIHZlY3Rvcjxsb25nIGxvbmcgPiBteDsgCiAKICAgIHNlZ21lbnRUcmVlKGludCBfbiA9IDApOiBuKF9uKXsgCiAgICAgICAgbXguYXNzaWduKG4gPDwgMiB8IDEsIDApOyAKICAgIH0gCiAKICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgdSwgaW50IHYsIGxvbmcgbG9uZyB4KXsgCiAgICAgICAgaWYgKGwgPiByIHx8IGwgPiB2IHx8IHIgPCB1IHx8IHUgPiB2KSByZXR1cm47IAogICAgICAgIGlmIChsID49IHUgJiYgciA8PSB2KSByZXR1cm4gbXhbaWRdID0gbWF4KG14W2lkXSwgeCksIHZvaWQoKTsgCiAgICAgICAgaW50IG0gPSAobCArIHIpID4+IDE7IAogICAgICAgIHVwZGF0ZShpZCA8PCAxLCBsLCBtLCB1LCB2LCB4KTsgCiAgICAgICAgdXBkYXRlKGlkIDw8IDEgfCAxLCBtICsgMSwgciwgdSwgdiwgeCk7IAogICAgfSAKIAogICAgdm9pZCB1cGRhdGUoaW50IHUsIGludCB2LCBsb25nIGxvbmcgeCl7IAogICAgICAgIHVwZGF0ZSgxLCAxLCBuLCB1LCB2LCB4KTsgCiAgICB9IAogCiAgICBsb25nIGxvbmcgZ2V0KGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcCl7IAogICAgICAgIGlmIChsID09IHIpIHJldHVybiBteFtpZF07IAogICAgICAgIGludCBtID0gKGwgKyByKSA+PiAxOyAKICAgICAgICBpZiAocCA8PSBtKSByZXR1cm4gbWF4KG14W2lkXSwgZ2V0KGlkIDw8IDEsIGwsIG0sIHApKTsgCiAgICAgICAgZWxzZSByZXR1cm4gbWF4KG14W2lkXSwgZ2V0KGlkIDw8IDEgfCAxLCBtICsgMSwgciwgcCkpOyAKICAgIH0gCiAKICAgIGxvbmcgbG9uZyBnZXQoaW50IHApeyAKICAgICAgICByZXR1cm4gZ2V0KDEsIDEsIG4sIHApOyAKICAgIH0gCn07IAogCnZvaWQgaW5wdXQoKXsgCiAgICBjaW4gPj4gWCA+PiBZID4+IG51bVRyZWU7IAogCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG51bVRyZWU7IGkrKyl7IAogICAgICAgIGRvdWJsZSB4LCB5OyBjaW4gPj4geCA+PiB5OyAKICAgICAgICB0cmVlW2ldLnggPSByb3VuZCh4ICogMik7IAogICAgICAgIHRyZWVbaV0ueSA9IHJvdW5kKHkgKiAyKTsgCiAgICAgICAgY29tcC5wdXNoX2JhY2sodHJlZVtpXS55KTsgCiAgICAgICAgcG9zLnB1c2hfYmFjayhpKTsgCiAgICB9IAp9IAogCmxvbmcgbG9uZyBnZXRQb3MoY29uc3QgbG9uZyBsb25nICZwb3MpIHsgCiAgICByZXR1cm4gbG93ZXJfYm91bmQoYWxsKGNvbXApLCBwb3MpIC0gYmVnaW4oY29tcCkgKyAxOyAKfSAKIApib29sIGNtcChjb25zdCBpbnQgJmEsIGNvbnN0IGludCAmYil7IAogICAgcmV0dXJuIHRyZWVbYV0gPCB0cmVlW2JdOyAKfSAKIAp2b2lkIHNvbHZlKCl7IAogICAgZmlsdGVyKGNvbXApOyAKICAgIHNvcnQoYWxsKHBvcyksIGNtcCk7IAogCiAgICBzZWdtZW50VHJlZSBpdChzaXooY29tcCkpOyAKIAogICAgZm9yKGludCBpOiBwb3MpIHsgCiAgICAgICAgbG9uZyBsb25nIGxlbiA9IHRyZWVbaV0ueCAtIGl0LmdldChnZXRQb3ModHJlZVtpXS55KSk7IAogICAgICAgIGludCBMID0gbG93ZXJfYm91bmQoYWxsKGNvbXApLCB0cmVlW2ldLnkgLSBsZW4pIC0gYmVnaW4oY29tcCkgKyAxOyAKICAgICAgICBpbnQgUiA9IHVwcGVyX2JvdW5kKGFsbChjb21wKSwgdHJlZVtpXS55ICsgbGVuKSAtIGJlZ2luKGNvbXApOyAKICAgICAgICByZXNbaV0gPSBsZW47IAogICAgICAgIGl0LnVwZGF0ZShMLCBSLCB0cmVlW2ldLnggKyBsZW4pOyAKICAgIH0gCiAKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbnVtVHJlZTsgaSsrKSAKICAgICAgICBjb3V0IDw8IHJlc1tpXSA8PCAnXG4nOyAKfSAKIApib29sIE0yOyAKaW50IG1haW4oKXsgCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsgCiAgICAjZGVmaW5lIHRhc2sgInRlc3QiIAogICAgaWYgKGZvcGVuKHRhc2siLmlucCIsICJyIikpeyAKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOyAKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsgCiAgICB9IAogICAgaW50IHQgPSAxOyAKLy8gICAgY2luID4+IHQ7IAogICAgd2hpbGUodC0tKXsgCiAgICAgICAgaW5wdXQoKTsgCiAgICAgICAgc29sdmUoKTsgCiAgICB9IAogICAgY2VyciA8PCAoMS4wICAqIGNsb2NrKCkpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgIi5zXG4iOyAKICAgIGNlcnIgPDwgKCZNMiAtICZNMSkgLyAxMDQ4NTc2IDw8ICIgbWJcbiI7IAp9IAoK