Rohit collects coins: he has exactly one coin for every year from 1 to n. Naturally, Rohit keeps all the coins in his collection in the order in which they were released. Once Rohit'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 Rohit's coins were kept in the order 1 2 3 4 5 6 7 8. If Rohit'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. Rohit 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 which is the number of coins in Rohit'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.

-----Constraints-----
- $1 \leq N \leq 1000$
- $1 \leq A[N] \leq 10^9$

-----Sample Input:-----
8
1 6 5 4 3 2 7 8

-----Sample Output:-----
2 6

Difficulty: interview

Starter code:

Solutions:
n=int(input())
a=list(map(int,input().split()))

l,r=-1,-1
for i in range(n):
    if a[i]!=i+1:
        l=i
        break

for i in range(n-1,-1,-1):
    if a[i]!=i+1:
        r=i
        break

j=r+1

for i in range(l,r+1):
    if a[i]==j:
        j-=1
        continue
    else:
        print(0,0)
        return

print(l+1,r+1)

import sys
import math
import bisect
from sys import stdin,stdout
from math import gcd,floor,sqrt,log
from collections import defaultdict as dd
from bisect import bisect_left as bl,bisect_right as br

sys.setrecursionlimit(100000000)

ii     =lambda: int(input())
si     =lambda: input()
jn     =lambda x,l: x.join(map(str,l))
sl     =lambda: list(map(str,input().strip()))
mi     =lambda: list(map(int,input().split()))
mif    =lambda: list(map(float,input().split()))
lii    =lambda: list(map(int,input().split()))

ceil   =lambda x: int(x) if(x==int(x)) else int(x)+1
ceildiv=lambda x,d: x//d if(x%d==0) else x//d+1

flush  =lambda: stdout.flush()
stdstr =lambda: stdin.readline()
stdint =lambda: int(stdin.readline())
stdpr  =lambda x: stdout.write(str(x))

mod=1000000007


#main code
try:
    n=ii()
    arr=lii()
    for i in range(1,n+1):
        if i!=arr[i-1]:
            l=i
            break
    for i in range(n,-1,-1):
        if i!=arr[i-1]:
            r=i
            break
    temp=arr[l-1:r]
    temp.reverse()
    srr=arr[0:l-1]
    srr.extend(temp)
    srr.extend(arr[r:n])
    if srr==sorted(arr):
        print(l,r)
    else:
        print(0,0)
except:
    print(0,0)
        


n=int(input())
l=[int(x) for x in input().split()]
left, right, i, num, flag=0, 0, 0, 0, 0
while(i<n):
    if(l[i]!=i+1):
        num=l[i]
        i+=1
        left=i
        flag+=1
        while(i<n and abs(l[i]-num)==1):
            num=l[i]
            i+=1
        right=i
    else:
        i+=1
if(flag==1):
    print(left, right, sep=" ")
else:
    print("0 0")

N = int(input())
A=[0]
A+=[int(x) for x in input().split()]
i=0
while i<=N and i==A[i]:
    i+=1
j=N
while j>=i and j==A[j] :
    j-=1
    #print(j,A[j],end=' | ')
t=i
flg=True
for k in range(j,i-1,-1):
    #print(A[k],t,end=' | ')
    if A[k]!=t:
        flg=False
        break
    t+=1
if i>j:
    flg=False
if flg:
    print(i,j)
else:
    print(0,0)


# your code goes here
import math
n=int(input())
arr=list(map(int,input().split()))
lst=[0]*(n+1)
for i in range(0,n):
	lst[arr[i]]=i+1
i=1
while i<=n:
	if lst[i]!=i:
		break
	i+=1
if i==n+1:
	print('0 0')
else:
	j=lst[i]
	k=j+1
	l=i
	r=j
	while i<=j:
		if lst[i]!=j or lst[j]!=i:
			break
		i+=1
		j-=1
	if i<=j:
		print('0 0')
	else:
		while k<=n:
			if lst[k]!=k:
				break
			k+=1
		if k<=n:
			print('0 0')
		else:
			print(l,' ',r)
		


# cook your dish here
n=int(input())
a=list(map(int, input().split()))
flag=0
x=0
y=0
for i in range(0,n-1):
    
    if(flag==0 and (abs(a[i+1]-a[i])!=1)):
        flag+=1
        x=a[i+1]
    elif(flag==1 and (abs(a[i+1]-a[i])!=1)):
        flag+=1
        y=a[i]
    elif(flag==2 and (abs(a[i+1]-a[i])!=1)):
        flag+=1
        break;
if(flag==2):
    print(y,x)
else:
    print("0 0")

n = int(input())
x = [int(x) for x in input().split()]
np = [int(np) for np in range(1,n+1)]
l = []
for i in range(len(x)):
    if(x[i]!=np[i]):
        l.append(i)
if(len(l)>0):
    # print(''.join(map(str,list(reversed(x[min(l):max(l)+1])))),''.join(map(str, np[min(l):max(l)+1])))
    if(''.join(map(str,list(reversed(x[min(l):max(l)+1]))))==''.join(map(str, np[min(l):max(l)+1]))):
        print(min(l)+1,max(l)+1)
    else:
        print("0 0")
else:
    print("0 0")

# cook your dish here
try: 
    n=int(input())
    a=list(map(int,input().split()))

    l,r=-1,-1
    for i in range(n):
        if a[i]!=i+1:
            l=i
            break

    for i in range(n-1,-1,-1):
        if a[i]!=i+1:
            r=i
            break

    j=r+1

    for i in range(l,r+1):
        if a[i]==j:
            j-=1
            continue
        else:
            print(0,0)
            return

    print(l+1,r+1)
    
except EOFError as e: 
    print(e)

    


n=int(input())
a=list(map(int,input().split()))

l,r=-1,-1
for i in range(n):
    if a[i]!=i+1:
        l=i
        break

for i in range(n-1,-1,-1):
    if a[i]!=i+1:
        r=i
        break

j=r+1

for i in range(l,r+1):
    if a[i]==j:
        j-=1
        continue
    else:
        print(0,0)
        return

print(l+1,r+1)

n = int(input())
coins = list(map(int,input().split()))
start = -1
end = -1
ans = [0 for x in range(n)]
for i in range(n):
    if coins[i]!=i+1:
        if start==-1:
            start = i
            break
    ans[i] = coins[i]

for i in range(n-1,-1,-1):
    if coins[i]!=i+1:
        if end==-1:
            end = i
            break
    ans[i] = coins[i]
# print('start, end',start,end)
mid = start + (end-start)//2
s = start
e = end
while s<=end:
    # print(s,e,'s,e')
    # print('ans->',ans)
    # print(ans[s],coins[e])
    ans[s] = coins[e]
    # print(ans[s],coins[e])
    s +=1
    e -=1
    # print()

# print(ans)
start +=1
end +=1
for i in range(n):
    if ans[i]!=i+1:
        start = 0
        end = 0
        break
print(start,end)

n=int(input())
l=[int(x) for x in input().split()]
fr=0
to=0
r=1
for i in range(0,len(l)):
    if(l[i]==r):
        r+=1
    else:
        fr=r
        to=l[i]
        break
dup=to
br=0
for i in range(fr-1,to):
    if(l[i]==dup):
        dup-=1
    else:
        br=1
        break
dup=to+1
for i in range(to,len(l)):
    if(br==1):
        break
    if(l[i]==dup):
        dup+=1
    else:
        br=1
if(br==1):
    print("0 0")
else:
    print(fr,to)
        
    


n=int(input())
l=list(map(int,input().split()))
val=0
i=1
A,B=0,0
while i<=n:
    if i!=l[i-1]:
        p=l[i-1:l[i-1]]
        q=sorted(p,reverse=True)
        if p!=q:
            val+=1
            break 
        else:
            val+=1
            i=l[i-1]
            B=l[i-1]
            A=i
    i+=1
if val>1:
    print(0,0)
else:
    print(B,A)

from sys import stdin,stdout,exit
from heapq import *
try:
    n=(int(stdin.readline()))
    a=list(map(int,stdin.readline().split()))
    s=0
    l=0
    r=n
    left=right=False
    for i in range(n):
        if s+1==a[i]:
            s=a[i]
        else:
            l=i
            s=a[l]
            break
    for i in range(l+1,n):
        if s-1==a[i]:
            s=a[i]
        else:
            s=a[i]
            r=i
            break
    arr = a[:l]+(a[l:r])[::-1]+a[r:]
    s=0
    ans=True
    for i in arr:
        if s+1==i:
            s=i
        else:
            ans=False
            break
    if ans and l+1!=r:
        print(l+1,r)
    else:
        print(0,0)
except:
    print(0,0)


n = int(input())
l = list(map(int, input().split()))
flag = 0
for i in range(1, n + 1):
    if l[i-1] != i:
        start = i
        flag = 1
        break
for i in range(n, 0, -1):
    if l[i-1] != i:
        end = i
        break
if flag == 0:
    print(0,0)
    return
for x in range(start-1,end-1):
    if l[x+1]!=l[x]-1:
        print(0,0)
        return
print(start,end)

n=int(input())
arr=list(map(int,input().split()))
brr=[]
l,r=0,0
i=0
while i<n:
    if arr[i]!=i+1:
        l,r=i+1,arr[i]
        break
    i+=1
while i<r:
    if arr[i]!=(l+r-i-1):
        l,r=0,0
        break
    i+=1
while i<n:
    if arr[i]!=i+1:
        l, r = 0, 0
        break
    i+=1
print(l,r)

n, a = int(input()), [0] + list(map(int, input().split()))
l, r = 1, n
while l <= n and a[l] == l:
    l += 1
while r >= 1 and a[r] == r:
    r -= 1
if l < n and a[l:r + 1] == list(range(r, l - 1, -1)):
    print(l, r)
else:
    print('0 0')

# cook your dish here
n = int(input())
arr = list(map(int,input().split()))

def solve(arr,n):
    l=n
    for i in range(n):
        if(arr[i]!=i+1):
            l = i+1
            break
    if(l==n):
        return([0,0])
    
    r=1  
    for i in range(n-1,0,-1):
        if(arr[i]!=i+1):
            r = i+1
            break
    if(r==1):
        return([0,0])
    #print(arr[l-1:r],reversed([i for i in range(l,r+1)]))    
    if (arr[l-1:r]==[i for i in range(r,l-1,-1)]):
        return([l,r])
    else:
        return([0,0])
        
print(*solve(arr,n))
            



n=int(input())
l=list(map(int,input().split()))
f=0
ans=1
l1,l2=0,0
for i in range(1,n+1):

    if(l[i-1]!=i):
        if(f==0):
            idx=l.index(i)
            k=l[0:i-1]+l[i-1:idx+1][::-1]+l[idx+1:]
            l=k
            
            f=1
            l1=i
            l2=idx+1
        else:
            ans=0
if(ans==0):
    print(0,0)
else:
    print(l1,l2)




n=int(input())
l=list(map(int,input().split()))
f=0
ans=1
l1,l2=0,0
for i in range(1,n+1):

    if(l[i-1]!=i):
        if(f==0):
            idx=l.index(i)
            k=l[0:i-1]+l[i-1:idx+1][::-1]+l[idx+1:]
            l=k
            
            f=1
            l1=i
            l2=idx+1
        else:
            ans=0
if(ans==0):
    print(0,0)
else:
    print(l1,l2)



# cook your dish here
n=int(input())
a=list(map(int,input().split()))

l,r=-1,-1
for i in range(n):
    if a[i]!=i+1:
        l=i
        break

for i in range(n-1,-1,-1):
    if a[i]!=i+1:
        r=i
        break

j=r+1

for i in range(l,r+1):
    if a[i]==j:
        j-=1
        continue
    else:
        print(0,0)
        return

print(l+1,r+1)




def __starting_point():
    n = int(input())
    arr  = list(map(int, input().split()))
    l = -1
    r = -1

    for i in range(n):
        if arr[i]!=(i+1):
            l=i

    for i in range(n-1,0,-1):
        if arr[i]!=(i+1):
            r=i

    sub = arr[r:l+1]
    newarr = arr[:r] + sub[::-1] +arr[l+1:]
    if arr == list(range(1,n+1)):
        print("0 0")

    elif list(range(1,n+1)) == newarr:
        print(r+1,l+1)
    
    else:
        print( "0 0")


        

    

__starting_point()

n=int(input())
arr=[int(x) for x in input().split()]

i=0
l=[]
while i<n-1:
    if arr[i]<arr[i+1]:
        i=i+1
    else:
        j=i+1 
        while j<n and arr[j]<arr[j-1]:
            j=j+1
        l.append((i,j-1))
        i=j
if len(l)==1:
    ll=[]
    for i in range(l[0][1]+1,l[0][0],-1):
        ll.append(i)
    
    if ll==arr[l[0][0]:l[0][1]+1]:
        print(l[0][0]+1,l[0][1]+1)
    else:
        print(0,0)
else:
    print(0,0)
        
    


n = int(input())
arr = list(map(int,input().split()))
i,j = 0,n-1
x,y = -1,-1
while i<j:
    if arr[i]==i+1 and x<0: i+=1
    else: x=i
    if arr[j]==j+1 and y<0: j-=1
    else: y=j
    if x>=0 and y>=0: break
if arr[i:j+1][::-1]==list(range(x+1,y+2)):
    print(x+1,y+1)
else:
    print(0,0)

n=int(input())
a=list(map(int,input().split()))

l,r=-1,-1
for i in range(n):
    if a[i]!=i+1:
        l=i
        break

for i in range(n-1,-1,-1):
    if a[i]!=i+1:
        r=i
        break

j=r+1

for i in range(l,r+1):
    if a[i]==j:
        j-=1
        continue
    else:
        print(0,0)
        return

print(l+1,r+1)