Iahub got lost in a very big desert. The desert can be represented as a *n* × *n* square matrix, where each cell is a zone of the desert. The cell (*i*, *j*) represents the cell at row *i* and column *j* (1 ≤ *i*, *j* ≤ *n*). Iahub can go from one cell (*i*, *j*) only down or right, that is to cells (*i* + 1, *j*) or (*i*, *j* + 1). 

Also, there are *m* cells that are occupied by volcanoes, which Iahub cannot enter. 

Iahub is initially at cell (1, 1) and he needs to travel to cell (*n*, *n*). Knowing that Iahub needs 1 second to travel from one cell to another, find the minimum time in which he can arrive in cell (*n*, *n*).
The first line contains two integers *n* (1 ≤ *n* ≤ 10<sup class="upper-index">9</sup>) and *m* (1 ≤ *m* ≤ 10<sup class="upper-index">5</sup>). Each of the next *m* lines contains a pair of integers, *x* and *y* (1 ≤ *x*, *y* ≤ *n*), representing the coordinates of the volcanoes.

Consider matrix rows are numbered from 1 to *n* from top to bottom, and matrix columns are numbered from 1 to *n* from left to right. There is no volcano in cell (1, 1). No two volcanoes occupy the same location.
__author__ = 'Pavel Mavrin'

n, m = [int(x) for x in input().split()]
a = []
for i in range(m):
    a.append([int(x) - 1 for x in input().split()])

a.sort(key=lambda x: x[0] * n + x[1])
a.append([n - 1, n])

d = [[0, 1]]
r = 0
i = 0
while i < len(a):
    if a[i][0] == r:
        dd = []
        j = 0
        while i < len(a) and a[i][0] == r and j < len(d):
            if a[i][1] < d[j][0]:
                i += 1
            elif a[i][1] == d[j][0]:
                d[j][0] += 1
                if d[j][0] >= d[j][1]:
                    j += 1
                i += 1
            else:
                dd.append([d[j][0], a[i][1]])
                d[j][0] = a[i][1] + 1
                while j < len(d) and d[j][1] <= a[i][1] + 1:
                    j += 1
                if j < len(d):
                    d[j][0] = max(d[j][0], a[i][1] + 1)
        if j < len(d):
            dd.append([d[j][0], n])
        while i < len(a) and (a[i][0] == r):
            i += 1
        d = dd
        r += 1
        if len(d) == 0:
            break
    else:
        r = a[i][0]
        d = [[d[0][0], n]]
    #print(r, i, d)

if len(d) == 0 or d[len(d) - 1][1] < n:
    print(-1)
else:
    print(2 * (n - 1))
















# Made By Mostafa_Khaled