#include <bits/stdc++.h> // NeOWami
using namespace std;
#define NeOWami signed
#define ft first
#define sc second
#define int long long
using pii = pair<int, int>;
template<class T> using heapmin = priority_queue<T, vector<T>, greater<T>>;
const int N = 1e6 + 5;
const int inf = 1e18;
int n, id[N], dist[N], par[N];
pii a[N], b[N];
vector<pii> G[N];
bool ckmin(int &u, int v) {
if (u > v) return u = v, 1;
return 0;
}
bool cmp(int i, int j) {
return b[i].ft + b[i].sc < b[j].ft + b[j].sc;
}
void SweepLine() {
for (int i = 1; i <= n; i++) id[i] = i;
sort(id + 1, id + n + 1, cmp);
map<int, int, greater<int>> active;
for (int i = 1; i <= n; i++) {
int u = id[i];
for (map<int, int>::iterator it = active.lower_bound(b[u].ft); it != active.end(); active.erase(it++)) {
int v = it->sc;
if (b[u].ft - b[u].sc > b[v].ft - b[v].sc) break;
G[u].push_back({b[u].ft - b[v].ft + b[u].sc - b[v].sc, v});
G[v].push_back({b[u].ft - b[v].ft + b[u].sc - b[v].sc, u});
}
active[b[u].ft] = u;
}
}
NeOWami main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("DESERT.inp")) {
freopen("DESERT.inp", "r", stdin);
freopen("DESERT.out", "w", stdout);
}
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i].ft >> a[i].sc;
for (int i = 1; i <= n; i++) b[i] = a[i];
for (int rot = 0; rot < 4; rot++) {
SweepLine();
for (int i = 1; i <= n; i++) {
if (rot & 1) b[i].ft *= -1;
else swap(b[i].ft, b[i].sc);
}
}
fill(dist + 1, dist + n + 1, inf);
dist[1] = 0;
heapmin<pii> Q;
Q.push({0, 1});
while(!Q.empty()) {
int old = Q.top().ft, u = Q.top().sc;
Q.pop();
for (pii item: G[u]) {
int w = max(item.ft, old), v = item.sc;
if (ckmin(dist[v], w)) {
Q.push({w, v});
par[v] = u;
}
}
}
vector<int> ans;
for (int i = n; i; i = par[i]) ans.push_back(i);
reverse(ans.begin(), ans.end());
cout << dist[n] << "\n";
for (int item: ans) cout << item << " ";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTmVPV2FtaSBzaWduZWQKI2RlZmluZSBmdCBmaXJzdAojZGVmaW5lIHNjIHNlY29uZAojZGVmaW5lIGludCBsb25nIGxvbmcKdXNpbmcgcGlpID0gcGFpcjxpbnQsIGludD47CnRlbXBsYXRlPGNsYXNzIFQ+IHVzaW5nIGhlYXBtaW4gPSBwcmlvcml0eV9xdWV1ZTxULCB2ZWN0b3I8VD4sIGdyZWF0ZXI8VD4+Owpjb25zdCBpbnQgTiA9IDFlNiArIDU7CmNvbnN0IGludCBpbmYgPSAxZTE4OwppbnQgbiwgaWRbTl0sIGRpc3RbTl0sIHBhcltOXTsKcGlpIGFbTl0sIGJbTl07CnZlY3RvcjxwaWk+IEdbTl07CmJvb2wgY2ttaW4oaW50ICZ1LCBpbnQgdikgewogICAgaWYgKHUgPiB2KSByZXR1cm4gdSA9IHYsIDE7CiAgICByZXR1cm4gMDsKfQpib29sIGNtcChpbnQgaSwgaW50IGopIHsKICAgIHJldHVybiBiW2ldLmZ0ICsgYltpXS5zYyA8IGJbal0uZnQgKyBiW2pdLnNjOwp9CnZvaWQgU3dlZXBMaW5lKCkgewogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBpZFtpXSA9IGk7CiAgICBzb3J0KGlkICsgMSwgaWQgKyBuICsgMSwgY21wKTsKICAgIG1hcDxpbnQsIGludCwgZ3JlYXRlcjxpbnQ+PiBhY3RpdmU7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBpbnQgdSA9IGlkW2ldOwogICAgICAgIGZvciAobWFwPGludCwgaW50Pjo6aXRlcmF0b3IgaXQgPSBhY3RpdmUubG93ZXJfYm91bmQoYlt1XS5mdCk7IGl0ICE9IGFjdGl2ZS5lbmQoKTsgYWN0aXZlLmVyYXNlKGl0KyspKSB7CiAgICAgICAgICAgIGludCB2ID0gaXQtPnNjOwogICAgICAgICAgICBpZiAoYlt1XS5mdCAtIGJbdV0uc2MgPiBiW3ZdLmZ0IC0gYlt2XS5zYykgYnJlYWs7CiAgICAgICAgICAgIEdbdV0ucHVzaF9iYWNrKHtiW3VdLmZ0IC0gYlt2XS5mdCArIGJbdV0uc2MgLSBiW3ZdLnNjLCB2fSk7CiAgICAgICAgICAgIEdbdl0ucHVzaF9iYWNrKHtiW3VdLmZ0IC0gYlt2XS5mdCArIGJbdV0uc2MgLSBiW3ZdLnNjLCB1fSk7CiAgICAgICAgfQogICAgICAgIGFjdGl2ZVtiW3VdLmZ0XSA9IHU7CiAgICB9Cn0KTmVPV2FtaSBtYWluKCkgewogICAgY2luLnRpZShOVUxMKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGlmKGlmc3RyZWFtKCJERVNFUlQuaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJERVNFUlQuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiREVTRVJULm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXS5mdCA+PiBhW2ldLnNjOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBiW2ldID0gYVtpXTsKICAgIGZvciAoaW50IHJvdCA9IDA7IHJvdCA8IDQ7IHJvdCsrKSB7CiAgICAgICAgU3dlZXBMaW5lKCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgICAgIGlmIChyb3QgJiAxKSBiW2ldLmZ0ICo9IC0xOwogICAgICAgICAgICBlbHNlIHN3YXAoYltpXS5mdCwgYltpXS5zYyk7CiAgICAgICAgfQogICAgfQogICAgZmlsbChkaXN0ICsgMSwgZGlzdCArIG4gKyAxLCBpbmYpOwogICAgZGlzdFsxXSA9IDA7CiAgICBoZWFwbWluPHBpaT4gUTsKICAgIFEucHVzaCh7MCwgMX0pOwogICAgd2hpbGUoIVEuZW1wdHkoKSkgewogICAgICAgIGludCBvbGQgPSBRLnRvcCgpLmZ0LCB1ID0gUS50b3AoKS5zYzsKICAgICAgICBRLnBvcCgpOwogICAgICAgIGZvciAocGlpIGl0ZW06IEdbdV0pIHsKICAgICAgICAgICAgaW50IHcgPSBtYXgoaXRlbS5mdCwgb2xkKSwgdiA9IGl0ZW0uc2M7CiAgICAgICAgICAgIGlmIChja21pbihkaXN0W3ZdLCB3KSkgewogICAgICAgICAgICAgICAgUS5wdXNoKHt3LCB2fSk7CiAgICAgICAgICAgICAgICBwYXJbdl0gPSB1OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmVjdG9yPGludD4gYW5zOwogICAgZm9yIChpbnQgaSA9IG47IGk7IGkgPSBwYXJbaV0pIGFucy5wdXNoX2JhY2soaSk7CiAgICByZXZlcnNlKGFucy5iZWdpbigpLCBhbnMuZW5kKCkpOwogICAgY291dCA8PCBkaXN0W25dIDw8ICJcbiI7CiAgICBmb3IgKGludCBpdGVtOiBhbnMpIGNvdXQgPDwgaXRlbSA8PCAiICI7Cn0=