Vasya collects coins: he has exactly one coin for every year from 1 to n. Naturally, Vasya keeps all the coins in his collection in the order in which they were released. Once Vasya's younger brother made a change — he took all the coins whose release year dated from l to r inclusively and put them in the reverse order. That is, he took a certain segment [l, r] and reversed it. At that the segment's endpoints did not coincide. For example, if n = 8, then initially Vasya's coins were kept in the order 1 2 3 4 5 6 7 8. If Vasya's younger brother chose the segment [2, 6], then after the reversal the coin order will change to 1 6 5 4 3 2 7 8. Vasya suspects that someone else could have spoilt the permutation after his brother. Help him to find that out. Check if the given permutation can be obtained from the permutation 1 2 ... n using exactly one segment reversal. If it is possible, find the segment itself.

Input

The first line contains an integer n (1 ≤ n ≤ 1000) which is the number of coins in Vasya's collection. The second line contains space-separated n integers which are the spoilt sequence of coins. It is guaranteed that the given sequence is a permutation, i.e. it contains only integers from 1 to n, and every number is used exactly 1 time.

Output

If it is impossible to obtain the given permutation from the original one in exactly one action, print 0 0. Otherwise, print two numbers l r (1 ≤ l < r ≤ n) which are the endpoints of the segment that needs to be reversed to obtain from permutation 1 2 ... n the given one.

Examples

Input

8
1 6 5 4 3 2 7 8


Output

2 6


Input

4
2 3 4 1


Output

0 0


Input

4
1 2 3 4


Output

0 0


stdin_flag=1
if not stdin_flag:
  read_line_index=0
  testcasefilename="test.txt"
  Stestcase=open(testcasefilename).read()
  read_line_datas=Stestcase.split("\n")


def debugs(s):
  if not stdin_flag:
    print ";;;",s

def puts(s):
  import sys
  sys.stdout.write(str(s))

#####################################
######################################

def read_line():
  global read_line_index
  if stdin_flag:
    return raw_input()
  else:
    s=read_line_datas[read_line_index]
    read_line_index+=1
    return s

def answer():
  if stdin_flag:
    return solve()
  else:
    while read_line_proceed():
      solve()
      

def read_line_proceed():
  global read_line_index
  print"##################"
  while 1:
    if read_line_index>= len (read_line_datas ):
      return False
    if read_line_datas[read_line_index]=="%%%":
      read_line_index+=1
      return True
    read_line_index+=1


def readint():
  return int (read_line() )


def readints():
  return map(int, read_line().split(" "))

def reads():
  return read_line()




###############################################################
###############################################################
###############################################################
###############################################################
###############################################################
###############################################################
###############################################################
###############################################################

def compute(ss):
  m={}
  for s in ss:
    if s==" ":continue
    if s in m:
      m[s]+=1
    else:
      m[s]=1
  return m

  pass

def pos(s):
  return (ord(s[0])-ord("a") , int(s[1])-1)

def m2p(n):
  s=1
  while s<=n:s*=2
  return s/2

def check(x1,x2):
  if x1 not in pow2 and x2 not in pow2:
    return False
  if not 0.8*x1<=x2<=1.25*x1:
    return False
  if n1<x1 or n2<x2:
    return False
  return True

def divs(n):
  return[i for i in xrange(1,n+1) if n%i==0]

def solve():
  n=readint()
  s=readints()
  if s==list(range(1,n+1)):
    print"0 0"
    return

  x=[i for i in xrange(n) if s[i]!=i+1]
  l,r=x[0]+1,x[-1]+1
  if s[:l-1]+list(reversed(s[l-1:r]))+s[r:] ==list(range(1,n+1)):
    print"%s %s"%(l,r)
  else:
    print"0 0"
  debugs("%s %s"%(l,r))

def test():
  pass

test()
answer()
