// #pragma GCC optimize("O3", "unroll-loops")
// #pragma GCC target("avx2", "bmi", "bmi2", "lzcnt", "popcnt")
#include <bits/stdc++.h>
#define ldb long double
//#define double ldb
#define db double
#define unomap unordered_map
#define unoset unordered_set
#define endl '\n'
#define str string
#define strstr stringstream
#define sz(a) (int)a.size()
#define ll long long
// #define int ll
#define pii pair <int, int>
#define pll pair <ll, ll>
#define Unique(a) a.resize(unique(all(a)) - a.begin())
#define ull unsigned long long
#define fir first
#define sec second
#define idc cin.ignore()
#define lb lower_bound
#define ub upper_bound
#define all(s) s.begin(), s.end()
#define rall(s) s.rbegin(), s.rend()
#define rev reverse
#define gcd __gcd
#define pushb push_back
#define popb pop_back
#define pushf push_front
#define popf pop_front
#define emp emplace
#define empb emplace_back
#define mul2x(a, x) a << x
#define div2x(a, x) a >> x
#define lcm(a, b) (a / __gcd(a, b) * b)
#define log_base(x, base) log(x) / log(base)
#define debug cerr<<"No errors!",exit(0);
#define forw(i, a, b) for (int i = a; i <= b; ++i)
#define forw2(i, a, b) for (ll i = a; i <= b; ++i)
#define fors(i, a, b) for (int i = a; i >= b; --i)
#define fors2(i, a, b) for (ll i = a; i >= b; --i)
#define pqueue priority_queue
#define sqrt sqrtl
#define i128 __int128
#define popcount __builtin_popcountll
#define BIT(x, i) (((x) >> (i)) & 1)
#define MASK(x) ((1LL) << (x))
#define want_digit(x) cout << fixed << setprecision(x);
#define excuting_time 1000.0 * clock() / CLOCKS_PER_SEC
#define mapa make_pair
using namespace std;
const int MOD = 1e9 + 7; // 998244353;
const int inf = 1e9;
const ll INF = 1e18; // MASK(63) - 1
const int limN = 1e4 + 5;
const int dx[] = {-1, 0, 0, 1};
const int dy[] = {0, -1, 1, 0};
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
inline ll random(const ll &L, const ll &R) {
return uniform_int_distribution<ll> (L, R) (rng);
}
/* -------~~~~~~===== END OF TEMPLATE =====~~~~~~------- */
int n, m, k;
pii light[limN];
vector <int> row[limN], col[limN];
map <pii, int> f;
map <pii, bool> lighted;
void solve() {
cin >> n >> m >> k;
forw (i, 1, k) {
int r, c; cin >> r >> c;
light[i] = {r, c};
row[r].pushb(i); col[c].pushb(i);
lighted[mapa(r, c)] = true;
}
#define T tuple <int, int, int>
pqueue <T, vector <T>, greater <T>> pq;
f[{1, 1}] = 0; pq.emp(0, 1, 1);
while (!pq.empty()) {
int dis, r, c;
tie(dis, r, c) = pq.top(); pq.pop();
if (dis > f[{r, c}]) continue;
cout << r << " " << c << " " << dis << endl;
// không mua đuốc
forw (i, 0, 3) {
int _r = r + dx[i], _c = c + dy[i];
if (_r < 1 || _r > n || _c < 1 || _c > m) continue;
if (lighted.count(mapa(_r, _c))
&& (!f.count(mapa(_r, _c)) || f[mapa(_r, _c)] > dis)) {
f[mapa(_r, _c)] = dis;
pq.emp(dis, _r, _c);
}
}
// mua đuốc
forw (i, -1, 1) {
int _r = r + i;
if (_r > n || _r < 1) continue;
for (int id : row[_r]) {
pii cur = light[id];
if (!f.count(cur) || f[cur] > dis + 1) {
f[cur] = dis + 1;
pq.emp(dis + 1, cur.fir, cur.sec);
}
}
if (_r == n) {
pii cur = mapa(n, m);
if (!f.count(cur) || f[cur] > dis + 1) {
f[cur] = dis + 1;
pq.emp(dis + 1, cur.fir, cur.sec);
}
}
}
forw (i, -1, 1) {
int _c = r + i;
if (_c > m || _c < 1) continue;
for (int id : col[_c]) {
pii cur = light[id];
if (!f.count(cur) || f[cur] > dis + 1) {
f[cur] = dis + 1;
pq.emp(dis + 1, cur.fir, cur.sec);
}
}
if (_c == m) {
pii cur = mapa(n, m);
if (!f.count(cur) || f[cur] > dis + 1) {
f[cur] = dis + 1;
pq.emp(dis + 1, cur.fir, cur.sec);
}
}
}
}
if (f.count(mapa(n, m)))
cout << f[mapa(n, m)] << endl;
else cout << "-1\n";
}
signed main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
srand(time(NULL));
#define name "test"
if (fopen(name".INP", "r")) {
freopen(name".INP", "r", stdin);
freopen(name".OUT", "w", stdout);
}
bool testCase = false;
int numTest = 1;
// cin >> numTest;
forw (i, 1, numTest) {
if (testCase) cout << "Case #" << i << ": ";
solve();
}
return 0;
}
Ly8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIiwgInVucm9sbC1sb29wcyIpCi8vICNwcmFnbWEgR0NDIHRhcmdldCgiYXZ4MiIsICJibWkiLCAiYm1pMiIsICJsemNudCIsICJwb3BjbnQiKQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGRiIGxvbmcgZG91YmxlCi8vI2RlZmluZSBkb3VibGUgbGRiCiNkZWZpbmUgZGIgZG91YmxlCiNkZWZpbmUgdW5vbWFwIHVub3JkZXJlZF9tYXAKI2RlZmluZSB1bm9zZXQgdW5vcmRlcmVkX3NldAojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIHN0ciBzdHJpbmcKI2RlZmluZSBzdHJzdHIgc3RyaW5nc3RyZWFtCiNkZWZpbmUgc3ooYSkgKGludClhLnNpemUoKQojZGVmaW5lIGxsIGxvbmcgbG9uZwovLyAjZGVmaW5lIGludCBsbAojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSBwbGwgcGFpciA8bGwsIGxsPgojZGVmaW5lIFVuaXF1ZShhKSBhLnJlc2l6ZSh1bmlxdWUoYWxsKGEpKSAtIGEuYmVnaW4oKSkKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZmlyIGZpcnN0CiNkZWZpbmUgc2VjIHNlY29uZAojZGVmaW5lIGlkYyBjaW4uaWdub3JlKCkKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSwgcy5lbmQoKQojZGVmaW5lIHJhbGwocykgcy5yYmVnaW4oKSwgcy5yZW5kKCkKI2RlZmluZSByZXYgcmV2ZXJzZQojZGVmaW5lIGdjZCBfX2djZAojZGVmaW5lIHB1c2hiIHB1c2hfYmFjawojZGVmaW5lIHBvcGIgcG9wX2JhY2sKI2RlZmluZSBwdXNoZiBwdXNoX2Zyb250CiNkZWZpbmUgcG9wZiBwb3BfZnJvbnQKI2RlZmluZSBlbXAgZW1wbGFjZQojZGVmaW5lIGVtcGIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbXVsMngoYSwgeCkgYSA8PCB4CiNkZWZpbmUgZGl2MngoYSwgeCkgYSA+PiB4CiNkZWZpbmUgbGNtKGEsIGIpIChhIC8gX19nY2QoYSwgYikgKiBiKQojZGVmaW5lIGxvZ19iYXNlKHgsIGJhc2UpIGxvZyh4KSAvIGxvZyhiYXNlKQojZGVmaW5lIGRlYnVnIGNlcnI8PCJObyBlcnJvcnMhIixleGl0KDApOwojZGVmaW5lIGZvcncoaSwgYSwgYikgIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7ICsraSkKI2RlZmluZSBmb3J3MihpLCBhLCBiKSBmb3IgKGxsIGkgPSBhOyBpIDw9IGI7ICsraSkKI2RlZmluZSBmb3JzKGksIGEsIGIpICBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgZm9yczIoaSwgYSwgYikgZm9yIChsbCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgcHF1ZXVlIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgc3FydCBzcXJ0bAojZGVmaW5lIGkxMjggX19pbnQxMjgKI2RlZmluZSBwb3Bjb3VudCBfX2J1aWx0aW5fcG9wY291bnRsbAojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KSA+PiAoaSkpICYgMSkKI2RlZmluZSBNQVNLKHgpICgoMUxMKSA8PCAoeCkpCiNkZWZpbmUgd2FudF9kaWdpdCh4KSBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbih4KTsKI2RlZmluZSBleGN1dGluZ190aW1lIDEwMDAuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQwojZGVmaW5lIG1hcGEgbWFrZV9wYWlyCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OyAvLyA5OTgyNDQzNTM7CmNvbnN0IGludCBpbmYgPSAxZTk7CmNvbnN0IGxsIElORiA9IDFlMTg7IC8vIE1BU0soNjMpIC0gMQpjb25zdCBpbnQgbGltTiA9IDFlNCArIDU7CmNvbnN0IGludCBkeFtdID0gey0xLCAwLCAwLCAxfTsKY29uc3QgaW50IGR5W10gPSB7MCwgLTEsIDEsIDB9OwoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKaW5saW5lIGxsIHJhbmRvbShjb25zdCBsbCAmTCwgY29uc3QgbGwgJlIpIHsKICAgIHJldHVybiB1bmlmb3JtX2ludF9kaXN0cmlidXRpb248bGw+IChMLCBSKSAocm5nKTsKfQoKLyogLS0tLS0tLX5+fn5+fj09PT09IEVORCBPRiBURU1QTEFURSA9PT09PX5+fn5+fi0tLS0tLS0gKi8KCgoKaW50IG4sIG0sIGs7CnBpaSBsaWdodFtsaW1OXTsKdmVjdG9yIDxpbnQ+IHJvd1tsaW1OXSwgY29sW2xpbU5dOwptYXAgPHBpaSwgaW50PiBmOwptYXAgPHBpaSwgYm9vbD4gbGlnaHRlZDsKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuID4+IG0gPj4gazsKICAgIGZvcncgKGksIDEsIGspIHsKICAgICAgICBpbnQgciwgYzsgY2luID4+IHIgPj4gYzsKICAgICAgICBsaWdodFtpXSA9IHtyLCBjfTsKICAgICAgICByb3dbcl0ucHVzaGIoaSk7IGNvbFtjXS5wdXNoYihpKTsKICAgICAgICBsaWdodGVkW21hcGEociwgYyldID0gdHJ1ZTsKICAgIH0KCiAgICAjZGVmaW5lIFQgdHVwbGUgPGludCwgaW50LCBpbnQ+CiAgICBwcXVldWUgPFQsIHZlY3RvciA8VD4sIGdyZWF0ZXIgPFQ+PiBwcTsKICAgIGZbezEsIDF9XSA9IDA7IHBxLmVtcCgwLCAxLCAxKTsKICAgIHdoaWxlICghcHEuZW1wdHkoKSkgewogICAgICAgIGludCBkaXMsIHIsIGM7CiAgICAgICAgdGllKGRpcywgciwgYykgPSBwcS50b3AoKTsgcHEucG9wKCk7CiAgICAgICAgaWYgKGRpcyA+IGZbe3IsIGN9XSkgY29udGludWU7CiAgICAgICAgY291dCA8PCByIDw8ICIgIiA8PCBjIDw8ICIgIiA8PCBkaXMgPDwgZW5kbDsKCiAgICAgICAgLy8ga2jDtG5nIG11YSDEkXXhu5FjCiAgICAgICAgZm9ydyAoaSwgMCwgMykgewogICAgICAgICAgICBpbnQgX3IgPSByICsgZHhbaV0sIF9jID0gYyArIGR5W2ldOwogICAgICAgICAgICBpZiAoX3IgPCAxIHx8IF9yID4gbiB8fCBfYyA8IDEgfHwgX2MgPiBtKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKGxpZ2h0ZWQuY291bnQobWFwYShfciwgX2MpKSAKICAgICAgICAgICAgJiYgKCFmLmNvdW50KG1hcGEoX3IsIF9jKSkgfHwgZlttYXBhKF9yLCBfYyldID4gZGlzKSkgewogICAgICAgICAgICAgICAgZlttYXBhKF9yLCBfYyldID0gZGlzOwogICAgICAgICAgICAgICAgcHEuZW1wKGRpcywgX3IsIF9jKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgIC8vIG11YSDEkXXhu5FjCiAgICAgICAgZm9ydyAoaSwgLTEsIDEpIHsKICAgICAgICAgICAgaW50IF9yID0gciArIGk7CiAgICAgICAgICAgIGlmIChfciA+IG4gfHwgX3IgPCAxKSBjb250aW51ZTsKICAgICAgICAgICAgZm9yIChpbnQgaWQgOiByb3dbX3JdKSB7CiAgICAgICAgICAgICAgICBwaWkgY3VyID0gbGlnaHRbaWRdOwogICAgICAgICAgICAgICAgaWYgKCFmLmNvdW50KGN1cikgfHwgZltjdXJdID4gZGlzICsgMSkgewogICAgICAgICAgICAgICAgICAgIGZbY3VyXSA9IGRpcyArIDE7CiAgICAgICAgICAgICAgICAgICAgcHEuZW1wKGRpcyArIDEsIGN1ci5maXIsIGN1ci5zZWMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChfciA9PSBuKSB7CiAgICAgICAgICAgICAgICBwaWkgY3VyID0gbWFwYShuLCBtKTsKICAgICAgICAgICAgICAgIGlmICghZi5jb3VudChjdXIpIHx8IGZbY3VyXSA+IGRpcyArIDEpIHsKICAgICAgICAgICAgICAgICAgICBmW2N1cl0gPSBkaXMgKyAxOwogICAgICAgICAgICAgICAgICAgIHBxLmVtcChkaXMgKyAxLCBjdXIuZmlyLCBjdXIuc2VjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9ydyAoaSwgLTEsIDEpIHsKICAgICAgICAgICAgaW50IF9jID0gciArIGk7CiAgICAgICAgICAgIGlmIChfYyA+IG0gfHwgX2MgPCAxKSBjb250aW51ZTsKICAgICAgICAgICAgZm9yIChpbnQgaWQgOiBjb2xbX2NdKSB7CiAgICAgICAgICAgICAgICBwaWkgY3VyID0gbGlnaHRbaWRdOwogICAgICAgICAgICAgICAgaWYgKCFmLmNvdW50KGN1cikgfHwgZltjdXJdID4gZGlzICsgMSkgewogICAgICAgICAgICAgICAgICAgIGZbY3VyXSA9IGRpcyArIDE7CiAgICAgICAgICAgICAgICAgICAgcHEuZW1wKGRpcyArIDEsIGN1ci5maXIsIGN1ci5zZWMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChfYyA9PSBtKSB7CiAgICAgICAgICAgICAgICBwaWkgY3VyID0gbWFwYShuLCBtKTsKICAgICAgICAgICAgICAgIGlmICghZi5jb3VudChjdXIpIHx8IGZbY3VyXSA+IGRpcyArIDEpIHsKICAgICAgICAgICAgICAgICAgICBmW2N1cl0gPSBkaXMgKyAxOwogICAgICAgICAgICAgICAgICAgIHBxLmVtcChkaXMgKyAxLCBjdXIuZmlyLCBjdXIuc2VjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoZi5jb3VudChtYXBhKG4sIG0pKSkgCiAgICAgICAgY291dCA8PCBmW21hcGEobiwgbSldIDw8IGVuZGw7CiAgICBlbHNlIGNvdXQgPDwgIi0xXG4iOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY2luLnRpZShudWxscHRyKTsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgI2RlZmluZSBuYW1lICJ0ZXN0IgogICAgaWYgKGZvcGVuKG5hbWUiLklOUCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKG5hbWUiLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4obmFtZSIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQogICAgYm9vbCB0ZXN0Q2FzZSA9IGZhbHNlOwogICAgaW50IG51bVRlc3QgPSAxOwogICAgLy8gY2luID4+IG51bVRlc3Q7CiAgICBmb3J3IChpLCAxLCBudW1UZXN0KSB7CiAgICAgICAgaWYgKHRlc3RDYXNlKSBjb3V0IDw8ICJDYXNlICMiIDw8IGkgPDwgIjogIjsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCg==