/*
思路:将最小值排到最左侧,然后以最小值为n,进行一次排序
   或 将最大值排到最右侧,然后以最大值为n,进行一次排序

情况一:排序一次:
最小值在最左侧,以最小值为n

情况二:排序两次
1)最小值在最右侧,最大值不再最左侧,{x,3,max,1,4,min}
-以最左侧为n(x,min,1,2,3,4,max)
-以最右侧为n(min,1,2,x,3,4,max)

2)最小值在中间{1,2,4,min,4,x}
-以最右侧为n(min,1,2,3,4,x)
-以最左侧为n(min,1,2,3,..max)

情况三:排序三次
最小值在最右侧,最大值在最左侧 (max,1,2,3,4,min)
以最左侧为n(max,min,1,2,3,4)
以最右侧为n(min,1,2,3,max,4)    // 将min置换到最左侧。同理可以将max置换到最右侧
以最左侧为n(min,1,2,3,4,max)
*/

#include <iostream>
#include <algorithm>
using namespace std;


int fun(int n, int arr[])
{
    int* getMax = max_element(arr, arr+n);
    int* getMin = min_element(arr, arr+n);
    int maxi = (getMax - arr);
    int mini = (getMin - arr);

    int res = 0;
    if(mini == 0) res = 1;
    else if(mini == n)
    {
        if(maxi == 0) res = 3;
        else maxi = 2;
    }
    else    // 中间
    {
        res = 2;
    }
    return res;
}


int main()
{
    const int N = 1e5;
    int arr[N];
    int n;

    cin >> n;
    for(int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    cout << fun(n, arr);

    return 0;
}