#include<iostream>
#include<math.h>
#include<vector>

using namespace std;

int main()
{
    int flag = 0, sa = 0, sb = 0, n, temp; cin >> n;
    int k;
    vector <int> a, b;
    for(int i = 0; i < n; i++)
    {
        cin >> temp;
        if(temp > 0)
        {
            a.push_back(temp);
            sa += temp;
            //cout << sa << endl;
        }
        else
        {
            b.push_back(-1*temp);
            sb -= temp;
            //cout << sb << endl;
        }

    }
    k = min(a.size(), b.size());
    if(sa > sb)
    {
        cout << "first";
        flag = 1;
    }
    else if (sa < sb)
    {
        cout << "second";
        flag = 1;
    }
    else
    {
        for(int i = 0; i < k; i++)
        {
            if (a[i] > b[i])
            {
                cout << "first";
                flag = 1;
                break;
            }
            else if(b[i] > a[i])
            {
                cout << "second";
                flag = 1;
                break;
            }
        }

        if (flag != 1)
        {
            if (temp > 0)
                cout << "first";
            else
                cout << "second";
        }

    }

    //cout << endl << sa << endl << temp << endl << sb;
    return 0;
}


#include<iostream>
#include<math.h>
#include<vector>

using namespace std;

int main()
{
    long long temp, sa = 0, sb = 0,;
    int flag = 0, n; cin >> n;
    int k;

    vector <long long> a, b;
    for(int i = 0; i < n; i++)
    {
        cin >> temp;
        if(temp > 0)
        {
            a.push_back(temp);
            sa += temp;
            //cout << sa << endl;
        }
        else
        {
            b.push_back(-1*temp);
            sb -= temp;
            //cout << sb << endl;
        }

    }
    k = min(a.size(), b.size());
    if (k == 0)
        k = max(a.size(), b.size());
    if(sa > sb)
    {
        cout << "first";
        flag = 1;
    }
    else if (sa < sb)
    {
        cout << "second";
        flag = 1;
    }
    else
    {
        for(int i = 0; i < k; i++)
        {
            if (a[i] > b[i])
            {
                cout << "first";
                flag = 1;
                break;
            }
            else if(b[i] > a[i])
            {
                cout << "second";
                flag = 1;
                break;
            }
        }

        if (flag != 1)
        {
            if (temp > 0)
                cout << "first";
            else
                cout << "second";
        }

    }

    //cout << endl << sa << endl << temp << endl << sb;
    return 0;
}


#include<iostream>
#include<vector>

using namespace std;

int main()
{
    int flag = 0, sa = 0, sb = 0, n, temp; cin >> n;
    vector <int> a, b;
    for(int i = 0; i < n; i++)
    {
        cin >> temp;
        if(temp > 0)
        {
            a.push_back(temp);
            sa += temp;
            //cout << sa << endl;
        }
        else
        {
            b.push_back(-1*temp);
            sb -= temp;
            //cout << sb << endl;
        }
    }
    if(sa > sb)
    {
        cout << "first";
        flag = 1;
    }
    else if (sa < sb)
    {
        cout << "second";
        flag = 1;
    }
    else
    {
        for(int i = 0; i < n; i++)
        {
            if (a[i] > b[i])
            {
                cout << "first";
                flag = 1;
                break;
            }
            else if(b[i] > a[i])
            {
                cout << "second";
                flag = 1;
                break;
            }
        }
    if (flag != 1)
    {
        if (temp > 0)
            cout << "first";
        else
            cout << "second";
    }

    }

    //cout << endl << sa << sb;
    return 0;
}


#include<iostream>
#include<math.h>
#include<vector>

using namespace std;

int main()
{
    long long temp, sa = 0, sb = 0;
    int flag = 0, n; cin >> n;
    int k;

    vector <long long> a, b;
    for(int i = 0; i < n; i++)
    {
        cin >> temp;
        if(temp > 0)
        {
            a.push_back(temp);
            sa += temp;
            //cout << sa << endl;
        }
        else
        {
            b.push_back(-1*temp);
            sb -= temp;
            //cout << sb << endl;
        }

    }
    k = min(a.size(), b.size());
    if (k == 0)
        k = max(a.size(), b.size());
    if(sa > sb)
    {
        cout << "first";
        flag = 1;
    }
    else if (sa < sb)
    {
        cout << "second";
        flag = 1;
    }
    else
    {
        for(int i = 0; i < k; i++)
        {
            if (a[i] > b[i])
            {
                cout << "first";
                flag = 1;
                break;
            }
            else if(b[i] > a[i])
            {
                cout << "second";
                flag = 1;
                break;
            }
        }

        if (flag != 1)
        {
            if (temp > 0)
                cout << "first";
            else
                cout << "second";
        }

    }

    //cout << endl << sa << endl << temp << endl << sb;
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[200000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(b.size()>c.size())
             {
                cout<<"first"<<endl;
                return 0;
            }
            else if(c.size()>b.size())
            {
                cout<<"second"<<endl;
                return 0;
            }
            else
            {
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
            }
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[100000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        sort(b.begin(),b.end());
        sort(c.begin(),c.end());
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
int n;
cin>>n;
ll a[n];
vector<ll>v1;
vector<ll>v2;
for(int i=0;i<n;i++)
    {cin>>a[i];
    if(a[i]>0)
        v1.push_back(a[i]);
    else
        v2.push_back(abs(a[i]));
    }
ll sum1=0;
ll sum2=0;
for(int i=0;i<v1.size();i++)
        sum1+=v1[i];
for(int i=0;i<v2.size();i++)
        sum2+=v2[i];
if(sum1>sum2)
    cout<<"first";
else if(sum2>sum1)
    cout<<"second";
else
{
    int i,j;
    for(i=0,j=0;i<v1.size() && j<v2.size();i++,j++)
    {
        if(v1[i]==v2[j])
    continue;
        else if(v1[i]>v2[j])
            {cout<<"first";
            return 0;}
         else
         {cout<<"second";
         return 0;}
    }
    if(v1.size()>v2.size())
        cout<<"first";
    else if(v2.size()>v1.size())
        cout<<"second";
        else
        {
            if(a[n-1]>0)
                cout<<"first";
            else
                cout<<"second";
        }
}
    }


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    ll a[100000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,s=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
            r++;
        else
            s++;
    }
    if(r>s)
        cout<<"first"<<endl;
    else if(r<s)
        cout<<"second"<<endl;
    else
    {
        if(a[n-1]<0)
          cout<<"second"<<endl;
        else
          cout<<"first"<<endl;
    }
 //  getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[100000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(b.size()>c.size())
        {
            cout<<"first";
            return 0;
        }
    else if(c.size()>b.size())
        {
            cout<<"second";
            return 0;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[100000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[200000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[200000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(b.size()>c.size())
             {
                cout<<"first";
                return 0;
            }
            else if(c.size()>b.size())
            {
                cout<<"second";
                return 0;
            }
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[100000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(b.size()>c.size())
             {
                cout<<"first";
                return 0;
            }
            else if(c.size()>b.size())
            {
                cout<<"second";
                return 0;
            }
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <iostream>
#include <bits/stdc++.h>
#include<conio.h>
#define ll long long int
using namespace std;
int main(){

    int n;
    cin>>n;
    vector<int> b,c;
    ll a[200000];
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int r=0,sum=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]<0)
           c.push_back(abs(a[i]));
        else
           b.push_back(a[i]);
        sum+=a[i];
    }
    if(sum<0)
        cout<<"second"<<endl;
   else if(sum>0)
        cout<<"first"<<endl;
    else
    {
        int flag=0;
        int x=0;
        while(x<b.size() && x<c.size())
        {
            if(b[x]>c[x])
            {
                flag=1;
                break;
            }
            else if(b[x]<c[x])
            {
                flag=2;
                break;
            }
            x++;
        }
        if(flag==1)
            cout<<"first"<<endl;
        else if(flag==2)
            cout<<"second"<<endl;
        else
        {
            if(b.size()>c.size())
             {
                cout<<"first"<<endl;
                return 0;
            }
            else if(c.size()>b.size())
            {
                cout<<"second"<<endl;
                return 0;
            }
            if(a[n-1]<0)
                cout<<"second"<<endl;
            else
                cout<<"first"<<endl;
        }

    }
   //getch();
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int t, num, sum1 = 0, sum2 = 0;
    vector<int> n1, n2;
    cin >> t;
    while(t--)
    {
        cin >> num;
        if (num > 0)
        {
            n1.push_back(num);
            sum1+=num;
        }
        else
        {
            n2.push_back(abs(num));
            sum2+=abs(num);
        }
    }
    if (sum1 > sum2)
    {
        cout << "first";
    }
    else if (sum2 > sum1)
    {
        cout << "second";
    }
    else
    {
        if (n1 > n2)
        {
            cout << "first";
        }
        else if (n2 > n1)
        {
            cout << "second";
        }
        else
        {
            if (num > 0)
                cout << "first";
            else
                cout << "second";
        }
    }

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int num, n, c1 = 0, c2 = 0, s1 = 0, s2 = 0;
    cin >> num;
    char arr1[num], arr2[num];
    for (int i = 0; i<num; i++)
    {
        cin >> n;
        if (n > 0)
        {
            arr1[c1] = n-48;
            s1+=n;
            c1++;
        }
        else
        {
            arr2[c2] = abs(n)-48;
            s2+=abs(n);
            c2++;
        }
    }
    if (s1 > s2) cout << "first";
    else if (s2 > s1) cout << "second";
    else
    {
        if (c1 > c2)
        {
            for (int i = 0; i<c2; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "first";
                    return 0;
                }
            }
        }
        else if (c2 > c1)
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "second";
                    return 0;
                }
            }
        }
        else
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    if (n > 0)
                    {
                        cout << "first";
                        return 0;
                    }
                    else
                    {
                        cout << "second";
                        return 0;
                    }
                }
            }
        }
    }

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    int num;
    vector<int> v1, v2;
    cin >> num;
    int n, s1 = 0, s2 = 0;
    for (int i = 0; i<num; i++)
    {
        cin >> n;
        if (n > 0)
        {
            v1.push_back(n);
            s1+=n;
        }
        else
        {
            v2.push_back(abs(n));
            s2+=abs(n);
        }
    }
    for (int i = 0; i<v1.size(); i++)
    {
        if (v1[i] > v2[i])
        {
            cout << "first";
            return 0;
        }
        else if (v2[i] > v1[i])
        {
            cout << "second";
            return 0;
        }
    }
    if (n > 0)
        cout << "first";
    else
        cout << "second";

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long num, n, c1 = 0, c2 = 0, s1 = 0, s2 = 0;
    cin >> num;
    char arr1[num], arr2[num];
    for (int i = 0; i<num; i++)
    {
        cin >> n;
        if (n > 0)
        {
            arr1[c1] = n-48;
            s1+=n;
            c1++;
        }
        else
        {
            arr2[c2] = abs(n)-48;
            s2+=abs(n);
            c2++;
        }
    }
    if (s1 > s2) cout << "first";
    else if (s2 > s1) cout << "second";
    else
    {
        if (c1 > c2)
        {
            for (int i = 0; i<c2; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "first";
                    return 0;
                }
            }
        }
        else if (c2 > c1)
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "second";
                    return 0;
                }
            }
        }
        else
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    if (n > 0)
                    {
                        cout << "first";
                        return 0;
                    }
                    else
                    {
                        cout << "second";
                        return 0;
                    }
                }
            }
        }
    }

    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long num, n, c1 = 0, c2 = 0, s1 = 0, s2 = 0;
    cin >> num;
    int arr1[num], arr2[num];
    for (int i = 0; i<num; i++)
    {
        cin >> n;
        if (n > 0)
        {
            arr1[c1] = n;
            s1+=n;
            c1++;
        }
        else
        {
            arr2[c2] = abs(n);
            s2+=abs(n);
            c2++;
        }
    }
    if (s1 > s2) cout << "first";
    else if (s2 > s1) cout << "second";
    else
    {
        if (c1 > c2)
        {
            for (int i = 0; i<c2; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "first";
                    return 0;
                }
            }
        }
        else if (c2 > c1)
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    cout << "second";
                    return 0;
                }
            }
        }
        else
        {
            for (int i = 0; i<c1; i++)
            {
                if (arr1[i] > arr2[i])
                {
                    cout << "first";
                    return 0;
                }
                else if (arr2[i] > arr1[i])
                {
                    cout << "second";
                    return 0;
                }
                if (i == c2-1)
                {
                    if (n > 0)
                    {
                        cout << "first";
                        return 0;
                    }
                    else
                    {
                        cout << "second";
                        return 0;
                    }
                }
            }
        }
    }

    return 0;
}


// author: Saman Mahdanian
#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N], ans;

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	a[0] = n + 10;

	vector <int> stack;
	stack.push_back(0);
	dp[0] = ans = 0;
	for (int i = 1; i <= n; i++) {
		while (a[stack.back()] < a[i]) {
			dp[i] = max(dp[i], dp[stack.back()]);
			stack.pop_back();
		}
		if (stack.size() == 1)
			dp[i] = 0;
		else
			dp[i]++;
		ans = max(ans, dp[i]);
		stack.push_back(i);
	}
	cout << ans << endl;
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int N = 1e5 + 10;

struct node {
	int l, r, mx;
	int size() {
		return r - l;
	}
	int unity (int _l, int _r) {
		return max(0, min(_r, r) - max(_l, l));
	}
	node (int _l = 0, int _r = 0) {
		l = _l; r = _r; mx = 0;
	}
} seg[N << 2];

int n, a[N], dp[N], nxt[N];

void build (int, int, int = 1);
int get (int, int, int = 1);
void add (int, int = 1);

int32_t main() {
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	a[0] = n + 10;

	build (0, n + 2);

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		while (a[stack.back()] < a[i])
			stack.pop_back();
		nxt[i] = stack.back();
		stack.push_back(i);
	}

	// cout << "A: ";
	// for (int i = 0; i <= n; i++)
	// 	cout << a[i] << ' ';
	// cout << "\nNXT: ";
	// for (int i = 0; i <= n; i++)
	// 	cout << nxt[i] << ' ';
	// cout << endl;

	for (int i = 1; i <= n; i++)
		if (nxt[i] != 0) {
			dp[i] = get(nxt[i] + 1, i) + 1;
			// cerr << i << ' ' << nxt[i] << ' ' << dp[i] << endl;
			add (i);
		}

	int ans = 0;
	for (int i = 1; i <= n; i++)
		ans = max(ans, dp[i]);

	// for (int i = 0; i <= n; i++)
	// 	cout << dp[i] << ' ';
	// cout << endl;

	cout << ans << endl;
}

void build (int l, int r, int v) {
	seg[v] = node(l, r);
	if (r - l == 1)
		return;
	int med = (l + r) / 2;
	build (l, med, v << 1);
	build (med, r, v << 1 | 1);
}

int get (int l, int r, int v) {
	if (seg[v].unity(l, r) == 0)
		return 0;
	if (seg[v].unity(l, r) == seg[v].size())
		return seg[v].mx;
	return max(get(l, r, v << 1), get(l, r, v << 1 | 1));
}

void add (int ind, int v) {
	if (seg[v].unity(ind, ind + 1) == 0)
		return;
	if (seg[v].size() == 1) {
		seg[v].mx = dp[ind];
		return;
	}
	add (ind, v << 1);
	add (ind, v << 1 | 1);
	seg[v].mx = max(seg[v << 1].mx, seg[v << 1 | 1].mx);
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <algorithm>
#include <iostream>
#include <vector>
#include <deque>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N], nxt[N];
deque <int> dq;

int get (int);
void add (int);

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	a[0] = n + 10;

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		while (a[stack.back()] < a[i])
			stack.pop_back();
		nxt[i] = stack.back();
		stack.push_back(i);
	}

	for (int i = 1; i <= n; i++)
		if (nxt[i] != 0) {
			dp[i] = get(nxt[i] + 1) + 1;
			add(i);
		}

	int ans = 0;
	for (int i = 1; i <= n; i++)
		ans = max(ans, dp[i]);

	cout << ans << endl;
}

int get (int l) {
	while (dq.size() > 0 && dq.front() < l)
		dq.pop_front();
	if (dq.size() == 0)
		return 1;
	return dp[dq.front()];
}

void add (int ind) {
	while (dq.size() > 0 && dp[ind] >= dp[dq.back()])
		dq.pop_back();
	dq.push_back(ind);
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N];

int32_t main() {
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	a[n] = n + 10;
	reverse(a, a + n + 1);

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		int cnt = 0;
		int max_cut = 0;
		while (a[stack.back()] < a[i]) {
			cnt++;
			max_cut = max(max_cut, dp[stack.back()]);
			stack.pop_back();
		}
		dp[i] = dp[stack.back()];
		dp[i] = max(dp[i], max(cnt, max_cut));
		stack.push_back(i);
	}
	cout << dp[n] << endl;
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N];

int32_t main() {
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	a[n] = n + 10;
	reverse(a, a + n + 1);

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		int cnt = 0;
		int max_cut = 0;
		while (a[stack.back()] < a[i]) {
			cnt++;
			max_cut = max(max_cut, dp[stack.back()]);
			stack.pop_back();
		}
		dp[i] = dp[stack.back()];
		dp[i] = max(dp[i], max(cnt, 0));
		stack.push_back(i);
	}
	cout << dp[n] << endl;
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <algorithm>
#include <iostream>
#include <vector>
#include <deque>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N], nxt[N];
deque <int> dq;

int get (int);
void add (int);

int32_t main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	a[0] = n + 10;

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		while (a[stack.back()] < a[i])
			stack.pop_back();
		nxt[i] = stack.back();
		stack.push_back(i);
	}

	for (int i = 1; i <= n; i++)
		if (nxt[i] != 0) {
			dp[i] = get(nxt[i] + 1) + 1;
			add(i);
		}

	int ans = 0;
	for (int i = 1; i <= n; i++)
		ans = max(ans, dp[i]);

	cout << ans << endl;
}

int get (int l) {
	while (dq.size() > 0 && dq.front() < l)
		dq.pop_front();
	if (dq.size() == 0)
		return 0;
	return dp[dq.front()];
}

void add (int ind) {
	while (dq.size() > 0 && dp[ind] >= dp[dq.back()])
		dq.pop_back();
	dq.push_back(ind);
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


// author: Saman Mahdanian
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
const int N = 1e5 + 10;

int n, a[N], dp[N];

int32_t main() {
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	a[n] = n + 10;
	reverse(a, a + n + 1);

	vector <int> stack;
	stack.push_back(0);
	for (int i = 1; i <= n; i++) {
		int cnt = 0;
		int max_cut = 0;
		while (a[stack.back()] < a[i]) {
			cnt++;
			max_cut = max(max_cut, dp[stack.back()]);
			stack.pop_back();
		}
		dp[i] = dp[stack.back()];
		dp[i] = max(dp[i], max(0, max_cut));
		stack.push_back(i);
	}
	cout << dp[n] << endl;
}

// SamMHD :: 22/11/2018 23:32:35 :: Another O(n)...


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        int flag = 0;
        if (sec[i] > sec[k[i]] && k[k[i]] != 0) {
            int ind = k[k[i]];
            int kill = k[i];
            if (ind == 0) {
                _time[kill]++;
                sec[i] = _time[kill];
                _time[k[i]]--;
                flag = 1;
                k[i] = kill;
            }
            while (! flag && sec[ind] < sec[i] && ind > 0) {
                kill = ind;
                ind = k[ind];
            }
            if (ind == 0 && ! flag) {
                _time[kill]++;
                sec[i] = _time[kill];
                _time[k[i]]--;
                k[i] = kill;
            }
            else if (ind != 0){
                _time[ind]++;
                sec[i] = _time[ind];
                _time[k[i]]--;
                k[i] = ind;
            }
        }
    }
    sort (_time, _time + G);
    cout << _time[G - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        if (sec[i] > sec[k[i]] && sec[k[i]] > 0) {
            if (k[i] > 1) {
                _time[k[i]]--;
                int ind = k[k[i]];
                while (sec[ind] < sec[i] && (sec[ind] > 0 && ind > 1)) {
                    ind = k[ind];
                }
                _time[ind]++;
                sec[i] = _time[ind];
            }

        }
    }
    sort (_time, _time + G);
    cout << _time[G - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        if (sec[i] > sec[k[i]]) {
            if (k[i] > 1) {
                _time[k[i]]--;
                int ind = k[k[i]];
                while (sec[ind] < sec[i] && ind > 1)
                    ind = k[ind];
                _time[ind]++;
                sec[i] = _time[ind];
            }

        }
    }
    sort (_time, _time + n);
    cout << _time[n - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        int flag = 0;
        if (sec[i] > sec[k[i]] && k[k[i]] != 0) {
            int ind = k[k[i]];
            int kill = k[i];
            if (ind == 0) {
                _time[kill]++;
                sec[i] = _time[kill];
                _time[k[i]]--;
                flag = 1;
            }
            while (! flag && sec[ind] < sec[i] && ind > 0) {
                kill = ind;
                ind = k[ind];
            }
            if (ind == 0 && ! flag) {
                _time[kill]++;
                sec[i] = _time[kill];
                _time[k[i]]--;
            }
            else if (ind != 0){
                _time[ind]++;
                sec[i] = _time[ind];
                _time[k[i]]--;
            }
        }
    }
    sort (_time, _time + G);
    cout << _time[G - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1])
                k[i] = i - 1;
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i])
                    k[i] = j;
                else
                    k[i] = 0;
            }
        }
    }
    sort (k, k + n);
    int t = 0;
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        if (! k[i])
            continue;
        if (k[i] != k[i - 1]) {
            ans = max (ans, t);
            t = 1;
        }
        else
            t++;
    }
    cout << ans << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        if (sec[i] > sec[k[i]]) {
            _time[k[i]]--;
            int ind = k[k[i]];
            while (sec[ind] < sec[i] && ind > 0)
                ind = k[ind];
            _time[ind]++;
            sec[i] = _time[ind];

        }
    }
    sort (_time, _time + n);
    cout << _time[n - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        if (sec[i] > sec[k[i]] && sec[k[i]] > 0) {
            if (k[i] > 1) {
                _time[k[i]]--;
                int ind = k[k[i]];
                while (sec[ind] < sec[i] && (sec[ind] > 0 && ind > 1)) {
                    ind = k[ind];
                }
                _time[ind]++;
                sec[i] = _time[ind];
            }

        }
    }
    sort (_time, _time + n);
    cout << _time[n - 1] << endl;
    return 0;
}


#include <bits/stdc++.h>

using namespace std;

int n;
const int G = 100 * 1000 + 5;
int q[G];
int k[G];
int _time[G];
int sec[G];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
        if (i > 1) {
            if (q[i] < q[i - 1]) {
                k[i] = i - 1;
                _time[i - 1]++;
                sec[i] = _time[i - 1];
            }
            else {
                int j = k[i - 1];
                while (q[i] > q[j] && j > 0)
                    j = k[j];
                if (q[j] > q[i]) {
                    k[i] = j;
                    _time[j]++;
                    sec[i] = _time[j];
                }
                else
                    k[i] = 0;
            }
        }
        if (sec[i] > sec[k[i]]) {
            _time[k[i]]--;
            int ind = k[k[i]];
            while (sec[ind] < sec[i] && ind > 0)
                ind = k[ind];
            _time[ind]++;

        }
    }
    sort (_time, _time + n);
    cout << _time[n - 1] << endl;
    return 0;
}


/**********************************************************
 *     Code written by Akikaze                            *
 *     Duy-Bach Le, #Team4T's Chief Executor              *
 *     #Team4T Tertiary Flagship - Oblivion               *
 *                                                        *
 *     Written by a random fan of momocashew and Chiho    *
 *                                                        *
 *     Arigatougozaimasu, imouto-chan.                    *
 **********************************************************/

/************** [OPTIMIZATION PROTOCOL] **************/
#pragma comment(linker, "/stack:225450978")
#pragma GCC optimize("Ofast")
/*****************************************************/

/************** [LIBRARY PROTOCOL] **************/
#include <bits/stdc++.h>
using namespace std;
/************************************************/

/************** [LEGENDS/CONSTANTS] **************/
#define endl '\n'
#define i64 long long
#define ld long double
#define rsz resize
#define pub push_back
#define mp make_pair
#define fi first
#define se second
typedef vector<i64> vi;
typedef vector<ld> vd;
typedef vector<string> vs;
typedef vector<char> vc;
typedef vector<bool> vb;
typedef pair<i64, i64> pii;
typedef pair<i64, pii> pip;
typedef pair<pii, i64> ppi;
const long long Mod = 1000000007LL, INF = 1e9, LINF = 1e18;
const long double Pi = 3.141592653589793116, EPS = 1e-9, Gold = ((1+sqrt(5))/2);
long long keymod[] = {1000000007LL, 1000000009LL, 1000000021LL, 1000000033LL};
long long keyCount = sizeof(keymod) / sizeof(long long);
/*************************************************/

/************** [BITWISE FUNCTIONS] **************/
template<class T> int getbit(T s, int i) { return (s >> i) & 1; }
template<class T> T onbit(T s, int i) { return s | (T(1) << i); }
template<class T> T offbit(T s, int i) { return s & (~(T(1) << i)); }
template<class T> int cntbit(T s) { return __builtin_popcountll(s); }
/*************************************************/

/************** [MASTER CONTROLS - PHASE 1] **************/
auto TimeStart = chrono::steady_clock::now();
auto TimeEnd = chrono::steady_clock::now();
#define OImode 227420978
#define MultiTest 227420978
#define Interactive 227420978

#undef OImode // Switch this off if submitting OI problems.
#undef MultiTest // Switch this off if submitting multi-test problems.
#undef Interactive // Switch this off if submitting interactive problems. Also required when you need to debug step-by-step.

void ControlIO(int argc, char* argv[]);
void TimerStart();
void TimerStop();
void Exit();
/*********************************************************/

/************** [GLOBAL VARIABLES] **************/
i64 n, ans = 0; vi a, Time; stack<i64> S;
/************************************************/

/************** [FUNCTIONS] **************/

void Input() {
	cin >> n; a.rsz(n); Time.rsz(n, 0);
	for (i64 i=0; i<n; i++) cin >> a[i];
}

void Solve() {
	for (i64 i=0; i<n; i++) {
		while (!S.empty() && a[S.top()] < a[i]) {if (Time[S.top()] > 0) Time[i] = max(Time[i], Time[S.top()] + 1); S.pop();}
		if (!S.empty() && S.top() == i - 1) Time[i] = 1;
		S.push(i);
	}
	cout << *max_element(Time.begin(), Time.end());
}
/*****************************************/

/************** [MAIN] **************/
int main(int argc, char* argv[]) {
	ControlIO(argc, argv);

	#ifndef Interactive
		ios_base::sync_with_stdio(0); cin.tie(NULL);
	#else
		ios_base::sync_with_stdio(0);
	#endif

	#ifndef MultiTest
		Input(); TimerStart();
		Solve(); TimerStop();
	#else
		int T; cin >> T; TimerStart();
		while(T--) {Input(); Solve();}
		TimerStop();
	#endif

	return 0;
}
/************************************/

/************** [MASTER CONTROLS - PHASE 2] **************/
void ControlIO(int argc, char* argv[]) {
	#ifdef Akikaze
	time_t t = time(0);
	tm* now = localtime(&t);
	cout << "Source code by #Team4T-Akikaze.\n";
	cout << "Current time: ";
	cout << (now->tm_year + 1900) << '-'
	     << (now->tm_mon + 1) << '-'
	     <<  now->tm_mday << " | "
	     <<  now->tm_hour << ":"
	     <<  now->tm_min << ":"
	     <<  now->tm_sec
	     << "\n\n";
	if (argc > 1) assert(freopen(argv[1], "r", stdin));
	if (argc > 2) assert(freopen(argv[2], "w", stdout));
	#elif OImode
	freopen("FILENAME.INP", "r", stdin);
	freopen("FILENAME.OUT", "w", stdout);
	#endif
}

void TimerStart() {
	#ifdef Akikaze
	TimeStart = chrono::steady_clock::now();
	#endif
}

void TimerStop() {
	#ifdef Akikaze
	TimeEnd = chrono::steady_clock::now();
	auto ElapsedTime = TimeEnd - TimeStart;
	cout << "\n\nTime elapsed: " << chrono::duration<double>(ElapsedTime).count() << " seconds.\n";
	#endif
}

void Exit() {
	TimerStop(); exit(0);
}
/*********************************************************/

/*********************************************************************************************************************************************************************************************************
 * ti;.                               .:,:i:         :,;;itt;.        fDDEDDEEEEEEKEEEEEKEEEEEEEEEEEEEEEEE###WKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWW#WWWWWKKKKKEE      :,:.    f::::. .,ijLGDDDDDDDEEEEEEE*
 *ti;.                               .:,:i:          .:,;itt;:      GLDEEGEEEEEEEEEEEEEEEEEEDEEEEEEEEEEE#W#WEKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWKKKKKKG.     .::.      f:,...,ijLGDDDDDDDDEEEEEE *
 *ti;.                               .:,:i:            :,;;iti,    :fDDEEEEEEEEEEEEEEEKEEEEDEEEEEEEEEEEW##WEEEKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWWKKKKKKEG     .::.       .f,::,ijLGDDDDDDDDEEEEEE *
 *ti;.                               .:,:i:             .,,;iti;.  LDDEEEEEEEEEEKEEEEWEEEDDEEEEEEEEEEE#WWWEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWKKKKKEDj    .::.        .:L;;ijfGDDDDDDDDDEEEEE *
 *ti;.                               .:,:i:              .:,;;iii:LLDEEEEEEEEEEEKEEEEEEEEDEEEEEEEEEEEW#WWEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKWWKWWWWWWWWWWWWWWKKKKKKKEL    .::.         .:;LijLGGDDDDDDDDEEEEE *
 *ti;.                               .:,:;:                :,;;ittfDEEEEEEEEEEEEEEEEKEEEGEEEEEEEEEEEKWWWEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWKKKKKKKELj   .::.          :,;jffGGDDDDDDDDDEEEE *
 *ti;.                               .:,:i:                 .,;;tGGDEEEEEEEEEEEKEEEKEEEDEEEEEEEEEEEEWWWEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWKWWWWWWKKKKKKKEEL   .::.          .:;itDGGDDDDDDDDDEEEE *
 *ti;.                               .:::;:                   :;ifDEEEEEEEEEEEEKEEEKEEEEEEEEEEEEEEEWWWEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WWWKKKKKKKKEEf   .::.           :,itfGEDDDDDDDDDDDEE *
 *ti;.                               .:::;:                    :GGEEEEEEEEEEEKEKEEKEEEEEEEEEEEEEEEEWWEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKKKKEEDG  .::.           .,;jfLGKDLDDDDDDEEDD *
 *ti;.                               .:::;:                     fDEEEEEEKKKKKKKKKEKEEEEEEEEEEEEEEE#WEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#KKKKKKKKKKEEf .:::.           .,;tfLGDEDDDDDDDDEEE *
 *ti;.                                :::;:                    fDEEEEEEKKKKKKKKKKWKEEEEEEEEEEEEEEEWKEEEEEEEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKW##KKKKKKKKKEEft :::.           .,;tfLGDDDKDDDDDDDDD *
 *ti;.                                .::;:                    fDEEEEEEKKKKKKKWKKKKKEEEEEEEEEEEEE#WEEWEEEEEDEEDEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKKKEEGG :,:.           .,;tfLGGDDDKDDDDDDDD *
 *ti;.                                .:.;:                   tGDEEEEKKKKKKKKKKKKKKKKKEEEEEEEEEEEWEEKWEEEEEEEDEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWKKKKKKKEEDf :::.           .,;tfLGGDDDDEDDDDDDD *
 *ti;.                                .::;:                   fDEEEEEKKKKKKKKKKKWKKKKKKKKEEEEEEEWWEEWEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKW##KKKKKKKEEEft.::.           .,;tfLGGDDDDDDEDDDDD *
 *ti;.                                .:.;:                  tGDEEEKKKKKKKKKKKKKKKKKKKKKKEKEEEEE#EEWWEEEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKEEEGD:::.           .,;tfLGGDDDDDDDEDDDD *
 *ti;.                                .:.,.                  LDEEEEKKKKKKKKKKWKWKKKKKKKKKKKKEEEKWEKW#EEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKW##KKKKKKEEEEf,,:.           .,;tfLGGDDDDDDDDEDDD *
 *ti;.                               ..:.,.                 LGDEEEEKKKKKKKKKKWKKKKKKKKKKKKKKKKKWEEW#WEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKK##KKKKKEEEEEfi;,.           .,;tfLGGDDDDDDDDDKDD *
 *tt;.                                .:.,:                 jDEEEEKKKKKKKKKKWWKKKKKKKKKKKKKKKKKWKE#WWEEEEEEEEEEEEEEWEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKWWKKKKEEEEDfG;,:           .,;tfLGGDDDDDDDDDDKD *
 *tii,.                               .:.,.                tGDEEEEKKKKKKKKKKWWWKKKKKKKKKKKKKKKWKKWWWKEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKW#KKKKEEEEDGGi;,.          .,;tfLGGDDDDDDDDDDDE *
 *ti;;,:.                             .:.,:                fDEEEEKKKKKKKKKKKWKKKKKKKKKKKKKKKKKWEK#WWKEEEEEEEEEEEEDEEEEEEEEEEEEEEGEEEEEEEEEEEEEEEEEEEKKKKKKKWWKKEEEEEEDDf;;;,.         .,;tfLGGDDDDDDDDDDDD *
 *tii;,,:..                           ...,.               ;LEEEEEKKKKKKWKKKKWKKKKKKKKKKKKKKKKKEKKW#WEEEEEEEEEEEEEjEEEEEEEEEKEEEEGEEEEEEEEEKEEEEEEEEEEEEEEEEE#WKEEEEEEDDf;;;;,:        .,itfLGGDDDDDDDDDDDD *
 *ti;,,,,,:.                          ...,.               LDEEEEKKKKKKKKKKKWWWKKKKKKKKKKKKKKKWKK#W#WEEEEEEEEEEEDDLEEEEEEEEEWEEEEDEEEEEEEEEKEEEEEEEEEEEEEEEEEWWEEEEEEEDDfj,,,,,:.      .,itfGGGDDDDDDDDDDDD *
 *tii,,,,::::.                        ...,:              .fDEEEEKKKKKKWKKKKWWWKKKKKKKKKKKKKKKEKKW#WWEEEEEEEEEEEKiKEEKEEEEEEWEEEEDEEEEEEEEEEEEEEEEEEEEEEEEEEEWWEEEEEEEDDLD:::,,,:.     .,ijfGGGDDDDDDDDDDDD *
 *ti;:::::::::..                      .:.,:              LDEEEEKKKKKKKWKKKKWWKKKKKKKKKKKKKKKKtKKWWWWKEEEEEEEEEDiiDEEEEEEEEWWEEEEEEDEEEEEEEEEEEEEEEEEEEEEEEEEEWKEEEEEDDDGL:. .:,,,:    .,ijLGGGDDDDDDDDDDDD *
 *tt;. .::::::::..                    ...,:             :fDEEEKKKKKKKKKKKKWW#KKKKKKKKKKKKKKKKfKKWWWWKEEEEEEEEDti,DEKEEEEEEWWEEEDEEEEEEEEEKEEEEEEEEEEEEEDEEEEE#WEEEEEGGDGf:.  .:,;,:.  .,ijLGGDDDDDDDDDDDDD *
 *tt;.   .:::::::..                   ...,:             GDEEEKKKKKKKKWKKKKWWWKKKWKKKKKKKWWWKDEKLWWWWKKEEEEEEDEi,LDEEEEEEEEWWEEEEEEEEEEEEEEEEEEEEEEEEEDEDEEEEEW#EEEEDDDDGf,.    :,,,:...,ijLGGGDDDDDDDDDDDD *
 *tt;.    .....::::..                 ...,:             fDEEEKKKKKKKKWKKKKWWWWKKKWKKKKKKKKKKfWKiWWW#KKEEEEEEEi;.EDfEEEDEEiWWEEEEEEEEEEEEDGKEEEEEEEEEEDEEEEEEEWWEEEEDDDGGLi.     .,;,:::,ijLGGGDDDDDDDDDDDD *
 *tt;.      ....:::::.                ...,.            iDEEEEKKKKKKKKWKKWKWWWWWKKWWWKKKKKKKKtWKt#WWWKKEEEEEDji..DDKDDEDEGiWKEEEEEEEEEEDDEjEEEEEEEEEEEDEEEEEEEKWKEEDDDDGGff.      .:,;,,;ijLGGGDDDDDDDDDDDD *
 *tt;.        ....::::..              .:.,:           .LDEEEKKKKKKKKKKKKWWWWKWWWWWWWWWWKKKKWtKKiDWWWKKKEEEEKi:..DEDDDDDDiiWKEEEEEEEEEEDDEijDEEEEEKEEEEEEEEEEEEWWEEGDDDGGLG.       .:,;;iijLGGGDDDDDDDDDDDD *
 *tt;.          .....:::..            ...,.           .fEEEEKKKKKKKKWKKKKWWWWWWWWWWWWWWKWKKKiKDiLWWWWKEEEEEi,..fD:DDDDDti;WEEEEEEEEEEKDDi:iDDEEEEWEEEEEEEEEEEE#WEEGDDDDGGG.         :,iitjLGGGDDDDDDDDDDDD *
 *tti.            .....:::..          ...,.           GDEEEKKKKKKKKKWKKKWWW#WWWWWWWWWWWKWKKjiEjitWWWKKWEEEDi...DDLDDDDji;;WEEEEEEEEEEEDEj.iDDEEEEWEEEEEEEEEEEEWWEEDDDDDDGf.          .,;tjfLGGDDDDDDDDDDDD *
 *tti.              ....::::..        ...,.           fEEEKKKKKKKKKKKKKKKW#WWWWWWWWWWWWWWWWtiEiiiWWWKKEWKEi....D.EDDDEi;.fWEEEEEEEEEEDDfL.;EDDEEEWEEEEEEEEEEEEWWEEEDDDDDGf.           :;ijfLGGDDDDDDDDDDDD *
 *tti.                ....::::..      ...,.          LDEEEKKKKKKKKKKKKKKWWWWWWWWWWWWWWWW####WKiiiWWWKKKEEK,...:E:DDDEii..GWEEEEEEEEDWDDiL.,KDDEEEWEEEEEEEEEEEEWWKEEDDDDDGf:           .,itfLGGDDDDDDDDDDDD *
 *tti.                 .....:::..     ...,.          fDEEEKKKKKKKKKWKKKKWWWWWWWWWWWWW########WLiiWWWKKKEEjD...G,DDDDi;...EWEEEEEEEEDKDEii..LDDEEEWEEEEEEEEEEEEWWWEEDDDDDGfi           .,;tfLGGGDDDDDDDDDDD *
 *tti.                   .....:::..   ...,.         iGEEEKKKKKKKKKKWKKKKWWWWWWWWWWWW###########KiWWWKKEEE,.D..D.DDDii:...KKEEEEEEEEEDDj:...tEDEEEWEEEEEEEEEEEEWWWEEEDDDDDLL           .,;tjLLGGDDDDDDDDDDD *
 *tti.                     ....::::......:.         LEEEKKKKKKKKKKWWKKKWWW#KWWWWWWWW#####W####W##KWWKKEEL..:D.jjDDi;,....KKEEEEEEEDfDDi...:iKDEEEWKEEEEEEEEEEEWWWEEEEDDDDLG           .,;tjLLGGDDDDDDDDDDD *
 *tti.                        ...::::::..,.        :GEEEKKKKKKKKKKKKWWWWW##WWWWWWWWW##WKWK#W#W####WWKEEK.....G.DDti,.....KKEEEEEEDWGDf.,...iKDEEEWWEEEEEEEEEEEW#WEEEEEDDDGL           .,;tjLLGGDDDDDDDDDDD *
 *tti.                         ....::::::,.        GDEEKKKKKKKKKKKKKWWWW###WWWWWWWWWW#WWWK###W#####WKEKK.....jDDL;;......KKEEEEEEEEEDi.f...;KDEEEWWEEEEEEEEEEEWWWWEEEEEDDGf           .,;tjLLGGDDDDDDDDDDD *
 *tti.                           ....:::,,.       .LEEEKKKKKWKKKKKWWWWWW###WWWWWWWWWW#WWKW#WW##W#WWWKEKD:....:DD:;......;KEEEEEEEKiDD..f...,KKEEEWWEEEEEEEEEEEWWWWEEEEEDDDf           .:;tjLLGGGDDDDDDDDDD *
 *tti.                             ...::,,,:.     GDEEKKKKKKKKKKKKWWWWWWW#WWWWWWWWWWW#KjKWWWWWWWWWWWWEK.j,..;fD.;.......fKEEEEEDKG:Di..,....DKEEEWWEEEEEEKEKKKWWWWEEEEEEDDf           .:;tjLLGGDDDDDDDDDDD *
 *jti.                              ...::,,,,:.  .fEEEKKKKKWKKKKKKWWWWWWW#WWWWWWWWWWK#KKKWWWWWWWWWWWWWK..f:.:G.,:.......EKEEEEEKK;:E:.......fKEEEWWKEKEKKKKKKKW#WWEEEEEEDDf:          .,;tfLLGGDDDDDDDDDDD *
 *tti.                               ...:,,,;;,: iDEEKKKKKWKKKKKKKWWWWWWW#WWWWWWWWWWK#WDKWWKKWWWWWWWWWE..;G:G..,........KKEEEEEKi.Gi..:.....tKEEKWWWKKKKKKKKKKW##WKEEEEEEDfi          .,;tfLLGGGDDDDDDDDDD *
 *tti.                               ....::,,;;;,LEEKKKKKKWKKKKKWWWWWWW###WWWWWWWWWWKWWDKWEEEWKKWWWWWKKj.:LG..;.........EKEEEEKG;.G...;.....;KKEKWWWKKKKKKKKKKW##WWKEEEEEDfL          .,;tfLGGGDDDDDDDDDDD *
 *jti.                                ...::::,;ijDEEKKKKKWKKKKKKWKWWWWW##WWWWWWWWWWWKK#KKGDGDWEEWKKWKKGE,.i;.:.........:EKEEEKE;.:L...j.....,KWEKWWWKKKKKKKKKK####WKKEEEEDLG          .,;tfLGGGGDDDDDDDDDD *
 *jti.                                ...:...,,;GEEKKKKKWWKKKKKWWWWWWWW###WWWWWWWWWKKKWWKiLGGEDEDEKGKKiEG..;...........jKEEEKK;:.G....,.....:KKEWWWWKKKKKKKWKK####WKKKKEEEGL          .,;tfLGGGGDDDDDDDDDD *
 *jti.                                ...:.  .:,GEEKKKKKWKKKKKWWWWWWWW####WWWWWWWWWKKKWWKii;fDLGDK: EEi:E:.............EKEEKK;;..L...........KKKWWWWKKKKKKKWKK####WKKKWKEEDf          .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    ,EEKKKKKWWKKKKKWWWWWWWWW###WWWWWWWWKKKKfWWLt;i,. fi  EG..D:.............EKEKK;;..t....:.......KWKWWWWKKKKKKKWKK####WKKKWEEEDf:.        .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    GEEKKKKKWKKKKKWWWWWWWWW####WWWWWWWKKKKKt;KKEfff     .;t.................KKKKi;:..GtGGfG.......KWWWWWWKKKKKKKWKK###WWWKKKKEEEf,,:       .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    GEKKKKKWWKKKKKWWWWWWWWWW##WWWWWWWKKKKKKt;EiKKKK,   ...t................jEKKG;;..,.....,LGi....KWWWWWWKKKKKKWKKKW####WKKKKKEEL,,,:.     .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.  .GEEKKKKKWKKKKKWWWWWWWWWW###WWWWWWWKKKKKKtiE::tGG........................EEEj;;...,.........:D..DKWWWWWWKKKKK#KKW###W#WKKKKKEEfj:,,,:.   .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.   DEKKKKKWWKKKKKWWWWWWWWW####WWWWWWWKKKKKKiiE:::.::.......................EEi;;...j.....f......:iDKWWWWWWKKKKK#WW######WKKKKKEELG :,,,,:. .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.  fEEKKKKWWKKKKWWWWWWWWWWW###WWWWWWWWKKKKKK;tE::..........................DD;.;,.::......;........EWWWWWWWKKKKW#WW#####WWKKKWKKELG  .:,,,:::,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:. .DEKEKKKWWKKKKWWWWWWWWWWW###WWWWWWWWKKKKKE,iD::..........................D..,;.,;tLffi...........DWDWWWW#KKKWWWWW#####W#KKKWKEEGL    .:,;,,,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:. ;EEKKKKWWKKKKKWWWWWW#WWWW####WWWWWWKKKKKEL:iD:..........................j ..;..;;:.....i,........DKtWWWWWKKWWWWWW#####WWWKKKEKEDf     .:,;;;itfGGGDDDDDDDDDDDD *
 *jti.                                ...:. DEKKKKKWWKKKKWWWWWWW#WWWW####WWWWWWKKKKKEj:iG...............................:....................GKiWWWWWKKWW#WWW######WWKKKKKEEf       .,;iitfGGGDDDDDDDDDDDD *
 *jti.                                ...:.:EKKKKKWWKKKKKWWWWWWW#WWW#####WWWWWKWKKKKEi:if:.................................iEKEKKKKKKDj......DKiWWWWWKWK##WW#######WWKKK:KEEL        .:;itfGGGDDDDDDDDDDDD *
 *jji.                                ...:,DEEKKKWWWKWKKWWWWWWWWWWWW#####WWWWWWWKKKKEi:it..................................j.  KKKKKKKKKKKf..DKiWWWWWKWW##WW#######WWKKK,KEEf         .,;tfGGGDDDDDDDDDDDD *
 *jji.                                ..L:iDEEKKKWWKKKKKWWWWWWWWWWWW#####WWWWWKWKKKKKi.i;..................................  . KKKWWWWWWWWK..DGiWWWWWKK##WWW#####W#WWKKKjEKEL,        .:;tfGGGDDDDDDDDDDDD *
 *jji.                               .f:::EEEKKKWWWKKKKKWWWWWWWWWWWW#####WWWWWKWKKKKK;.i,.................................::  KKEKWWWWWWfWK..EiiWWWWWKWW#WW##########KKKD,KELj        .:;tfGGDDDDDDDDDDDDD *
 *jji.                             .t::::,DEEKKKWWKKKKWWWWWWWWW#WWWW#####WWWWKKWKKKEK;.i:.................................GDDEEEKKKWWWWWtWWD.E;iWWWWWW###WW#########WWKKK.EEDG        .:;tfGGGDDDDDDDDDDDD *
 *jji.                          . j..::::EKEKKKWWWKKKKWWWWWWWWW#WWW######WWWWKKWKKKEK;.t:.................................ELLEDDEEEWWWWEtWK,.KiiWWWWWW###W##########WWKKK:EEEG     .;tjfLLGDDDDDDDDDDDDDDD *
 *jji.                          i.::::::,EEEKKWWWKKKKKWWWWWWWWW#WWW#####WWWWWKWKKKKEE,.t..................................DfiEGDDDEEKKKttKWG.KiiWWWWW##WWW##########WWKKK:fEEL  ,fGGGDDDDDDDDEEEDDDDDDDDDD *
 *jji.                        .;:..:::::DEEEKKWWWKKKKKWWWWWWWWW#WWWW####WWWWWWWKKKKED,.t..................................ifjDDGGEGDKK.ttKKE.DiWWWWW###WW##########WWWKKK:.KELiLGGGGDDDDDDDDDDDDEEEDDDDDDD *
 *jji.                       i.:.::::::,KEEKKWWWKKKKKKWWWWWWWWW#WWWW####WWWWWWWKKKKEL:.j..................................GGf,;ifLLED .iiKKi:fWWWWWW##W#W##########WWWKKK:.KKLGGDDDDDDDDDDDDDDDDEDDEEDDDDD *
 *jji.                     .j:.::::::::EEEKKKWWWKKKKKKWWWWWWWW##WWW#####WWWWWWWKKKKKf:.f..................................:EEfftf .,. ;iE,..jWWWWWWW###W############WWKKK,:KKGDDDDDDDDDDDDDDDDDDDDDDDEDDDD *
 *jji.                    .:.::::::::,,EEEKKWWWKKKKKKKWWWWWWWW##WWW#####WWWWWWWKKKKKt..G....................................EEELL;   .j....tKWWWWWWW################WWWKKtfGKGEDDDDDDDDDDDDDDDDDDDDDDDEEDD *
 *jji.                   :...:::::::,,jEEKKWWWWKKKKKKWWWWWWWWW##KWW#####KWWWWWWKKKKEi..D....................................:jEEE.........;KKWWWWWWWW#WW##W##########WWKKDLGKEKDDDDDDDDDDDDDDDDDDDDDDDDDED *
 *jji.                  i:.::::::::,,,EEEKKWWWWKKKKKWWWWWWWWWW##WWW#####WWWWWWWKKKKKi..D......................................:::::......,KKKWWWWWWWWW#####W########WWWKKKGGKKEGGGGGGGGDDDDDDDDDDDDDDDDDDE *
 *jji.                 i..:::::::::,,tEEKKWWWWKKKKKWWWWWWWWWWW##WW######WWWWWWWKKKKKi..D......................................::::......:EKKKWWWWWWWWWWW##WW########W#WKKWGGKKGGGGGGGGGGGGGGGDDDDDDDDDDDDD *
 *jji.                .:::::::::::,,,EEEKKWWWWKKKKKWWWWWWWWWWW##WW#####WWWWWWWWKKKKKi..D....................................:::::::::..tELii;KWWWWWWWWWW##WW######WWWWWWKWGGGKGGGGGGGGGGGGGGGGGGGGGGGGGGDG *
 *jjt.                :.::::::::,,,,fEEKKWWWWKKKKKKWWWWWWWWWW###WW####WWWWWWW#WKKKKKi..D....................................:::::::.:.,;;;;;;,KKWWWWWWWWW#WW########WWWKKWGGGKGGGGGGGGGGGGGGGGGGGGGGGGGGGG *
 *jji.               ;.::::::::,,,,;EEEKWWWWWKKKKKWWWWWWWWWWWW##WW###WKWWWWWK#WKKKKKi..G......................................:::::::,;;;;:...KKKWWWWWWWWWKWW#######WWWWKKGLGKDGGGGGGLLGGGGGGGGGGGGGGGGGGG *
 *jjt.              f.:::::::::,,,,fEEKKWWWWWKKKKKWWWWWWWWWWW###WW##WKKWWWWWW#WKKKKK;.jt........i.............................:::::::;j;;....:E.KKKWWWWWWWKWW#####W#WWWWKKLLGWEEGGGGGLGGGGGGGGGGGGGGGGGGGG *
 *jjt.             ...:::::::,,,,,;DEEKWWWWWKKKKKWWWWWWWWWWWW####WWWKKKWWWWWWWWKKKKK;.E;.........t.............................:::::ii;;.....D...KKWWWWWWWKWW#####WWEWWWKKGGGEKKGGGGGLGGGGGGGGGGGGGLGGGGGG *
 *fji.             ;.:::::::,,,,,;LEEKKWWWWWKKKKKWWWWWWWWWWWW####KWKKKKWWWWWWWWKKKKKi.D;..........j.............................:::tt;,.....:.....KKWWWWWWKWWWW##WWWGWWWKKGGGGKEGGGGGGGGGGGGGGGGGGGLLGGGGL *
 *fji.            t::::::::,,,,,,;EEEKWWWWWKKKKKKKWWWWWWWWWWW##WKWKKKKKWWWWWWWWKKKKKi:D;............j...........................::LL;,.............KKWWWWWKWWWWWWWWWGWWWKKGGGGKGGGGGGGGGGGGGGGGGGGGLLGGGGL *
 *fjt:            .:::::::,,,,,,,DEEKWWWWWWKKKKKKKWWWWWWWWWWWWKKWKKKKKKWWWWK#WWKKKKWitE;........... ............................:G;;:...............KKKWWKKWWWWWWWWWGWWWKKGGGGWGGGGGGGGGGGGGGGGGGGGGGGGGGL *
 *fjji;:.       .f:::::::,,,,,,,;EEEKWWWWWWKKKKKKWWWWWWWWWWWKKKKKKKKKKKWWKWWWWWKKKKWGKD;........................................L;;..................DKKWKKWWWWWWWWWGWWWKKDGGGKDGGGGGGGGGGGGGGGGGGGGGGGGGG *
 *fjjtii;,:.     :::::::,,,,,,,;EEEKWWWWWWKKKKKKWWWWWWWWWWKKKKKKKKKKKKWWWWWW#WWKKKKWiEj;......................................:i,;....,...............;KKEKWWWWWWWWWGKWWKKDDGGDEGGGDGGGGGDGGGGGGGGGGGGGGGG *
 *fjtiiiii;;:.  j::::::,,,,,,,;;EEEKWWWWW#KKKKKWWWWWWWWWKKKKKKWKKKKKKKWWWWWWWWWKKKKWtEL;:....................................;;;:...,;j................:KEEWWWWWWWWWDDWWKKDDDDDKDDDDDDDDDDDDDDDGGGGGGGGGGG *
 *fjti;;iiii;;,:::::::,,,,,,,,;EEEKWWWWWWWKKKKWWWWWWWWKKKKKKKWKKKKKKKWWWWWWW#W#KKKKWEEii;...................................f;:....,;L...................EEKWWWWWWWWDDWWKKDDDDDKEDDDDDDDDDDDDDDDDDDDDDGGGG *
 *fjt,,,;;;;ii;f::::::,,,,,,,;;EEKWWWWWWWKKKKKWWWKWWKKKKKKKKKKKKKKKKKWWWWWWW#W#KKKKWKEij;:...............................:G;,.....,;f....................:tKKWWWWWWWDDWWKKDDDDDKKDDDDDDDDDDDDDDDDDDDDDDDDD *
 *jjt. ..:,;;;;,::::,,,,,,,,;;GEEWWWWWWWWKKKKWKKWKKKKKKKKKKKKKKKKKKKKWWWWWWW#W#KKKKWEDi;j;............................,Li;L;;;..,;;f........................KKKKWWWKDDWWKKDDDGDKKGGGGGGGGDGDDDDDDDDDDDDDDD *
 *fjt.    .:,,,:::::,,,,,,,;;;EEKWWWWWWWKKKKKKWKKKKKKKKKKKKKKKKKKKKKWKKKWKW##W#KKKKWEti;;G;........................tEEEL;;;;;;;;;;L..........................DKKKKKEDDWWKEDGftiLE;;;;itjLGGGGGGDDDDDDDDDDD *
 *fjt.       .j::::,,,,,,,;;;DEEWWWWWWWWKKKKWKKKKKKKKKKKKKKKKKKKKKKKWKKWWWK##W#KKKKKEii;;;L;...................iDEEEEEEKKi;j;;;;jD.....:......................,KKKKDGGEKKE:::::;E::::::::::,tLGGDDDDDDDDDD *
 *fjt.       .;:::,,,,,,,;;;;EEKWWWWWWWWKWKKKKKKKKKKKKKKKWKKKKKKKKKKWKKWWWW#WW#KKKKKKii;;;;f;.............:tDEEEEEKKKKKKKKEti;;;L...............................EEKf;:iKKE::::::E::::::::::::::ifDDDDDDDDD *
 *fjt:        :::,,,,,,,,;;;DEEWWWWWWWWWEKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKWWWW####KKKKKEiii;;;;f,.........iDEEEEKKKKKKKKKKKKKKKf;iG......i..........................fK::::KKE::::::E::::::::::::::::,tGGDDDDD *
 *fjt:       t:::,,,,,,;;;;iDEKWWWWWWKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKWWWW####WKKKKLiii;;;;;L,....,Li;EDEEEEKKKKKKKKKKKKKKKKiG......;:...........................:i:::KKE:::::,E,::::::::::::::::::iGDDDD *
 *jjt.       f::,,,,,,,;;;;GEEWWWWKEEKEKKKKKKKKKKKKKKKKWKKKKKKKKKKKWWKWWWWW###WWKKKKiii;;;;;;;G,;L;;iiEEEEEEEKKKKKKKKKKKKKWWKE......;t.........:....................j::KEE:,::,,D,,::::,,,,,,:::::::::tDDD *
 *fjt:.      ,::,,,,,,,;;;;EEWWKEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKWWKKWWWWW#W#KKKKKKiiiiii;;;;;i;;iiiEEKEEKKWKKKKKKKWKKKKKWWWGi;...;t......,;;;;,....................:,EEE,,,,,,D,,,,,,,,,,,,,,,,::,::::tG *
 *fjt:.     ,::,,,,,,,;;;;DEKEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWW#W#KKKKKKiiiii;;i;;;;;iiiKKKEKKKKWWKWWWWWWKKKKWWWWW;;;:;L.....;;;;;;;;;....................,KEE,,,,,,E,,,,,,,,,,,,,,,,,,,,,,,,; *
 *fjt:.     f:,,,,,,,;;;;jEDEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWW#W##KKKKKKiiiiiiii;i;;iiiEKKKKKKKKWKWWWWWWWWKKKWWWWWKi;;i.....,jEEfGi;;;;;...................EED,,,,,,E,,,,,,,,,,,,,,,,,,,,,,,,, *
 *fjt:.    .f::,,,,,,;;jEEDEEEEEEEEEEKKKKKKKKKKKKKKKWKKKKKKKKKKKKKWWWKWWWWW###KKKKKLiiiiiiiiiiiiiiEEKKKKKKKKWWWWWWWWWWWWKWWWWWWGi;i;,..;jDDDKEGi;;;;;;:................EED,,,,,,D,,,,,,,,,,,,,,,,,,,,,,,,, *
 *fjt:.  .. ;::,,,,,;;EDDEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKW#WW####KWKKKiiiiiiiiiiiiijKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWt;i;;;;i;DDDDDDGi;;;;;;;;:.............EDf;,,,;,G;;;;;;;;;;;;;;;,,,,,,,,,, *
 *fjt:......:,,,,,,;LDDDEEEEEEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKKKWWWWKWWWW####KKKKKiiiiiiiiiiijKEKKWKKKKKKKWWWWWWWWWWWWWWWWWWWWWWiLiii;i;DEEEEDDE;i;;;;;;;;;:..........EDi,;;;;;L;;;;;;;;;;;;;;;;;;,,,,,,, *
 *fjt:......:,,,,,;EDDDEEKEEEEEEEEEKKKKKKKKKKKKKKKWKKKKKKKKKKKKKKWWWWKKWWW##W#KWKKWEiiiiiijGKKKKKWWKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWKi;iiiiDDEEEEEEDEi;;;;;;;;;;;;;,:.....ED;;;;;;;j;;;;;;;;;;;;;;;;;;;;;;;,, *
 *fjt:.....t,,,,,;DDDDEEEKEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWKKKWWWW##WKWKKWKiiiKKKKKKKKKWWKKKKKKKKWWWWWWWWWWWWWWW#WWWWWWWWWiiiiifLEEEEEEEEDi;i;;;;;;;;;;;;.....DD;;;;;;;i;;;;;;;;;;;;;;;;;;;;;;;;; *
 *fjt:.....G,,,,,GDDDEEEEEEEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKKKKKWWWKKKWWW###WKWKKWKitKKKKKKKKKWKKKKKKKKKKWWWWWWWWWWWWWW###WWWWWWWWEiiiiiiiEEEEEEEEDGiiii;;;;;;;;;.....GD;;;;;;;i;;;;;;;;;;;;;;;;;;;;;;;;; *
 *fjt:.....L,,,,;GDDDEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWDGWWW###KKWWKWKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWW####WWWWWWWWWiiiiiiiiEEEEEEEEEEDi;i;;;;;;;;.....Lj;;;;;;i;iiiiii;;;;;;ii;;;;;;;;;;; *
 ***********************************************************************************************************************************************************************************************************/


/**********************************************************
 *     Code written by Akikaze                            *
 *     Duy-Bach Le, #Team4T's Chief Executor              *
 *     #Team4T Tertiary Flagship - Oblivion               *
 *                                                        *
 *     Written by a random fan of momocashew and Chiho    *
 *                                                        *
 *     Arigatougozaimasu, imouto-chan.                    *
 **********************************************************/

/************** [OPTIMIZATION PROTOCOL] **************/
#pragma comment(linker, "/stack:225450978")
#pragma GCC optimize("Ofast")
/*****************************************************/

/************** [LIBRARY PROTOCOL] **************/
#include <bits/stdc++.h>
using namespace std;
/************************************************/

/************** [LEGENDS/CONSTANTS] **************/
#define endl '\n'
#define i64 long long
#define ld long double
#define rsz resize
#define pub push_back
#define mp make_pair
#define fi first
#define se second
typedef vector<i64> vi;
typedef vector<ld> vd;
typedef vector<string> vs;
typedef vector<char> vc;
typedef vector<bool> vb;
typedef pair<i64, i64> pii;
typedef pair<i64, pii> pip;
typedef pair<pii, i64> ppi;
const long long Mod = 1000000007LL, INF = 1e9, LINF = 1e18;
const long double Pi = 3.141592653589793116, EPS = 1e-9, Gold = ((1+sqrt(5))/2);
long long keymod[] = {1000000007LL, 1000000009LL, 1000000021LL, 1000000033LL};
long long keyCount = sizeof(keymod) / sizeof(long long);
/*************************************************/

/************** [BITWISE FUNCTIONS] **************/
template<class T> int getbit(T s, int i) { return (s >> i) & 1; }
template<class T> T onbit(T s, int i) { return s | (T(1) << i); }
template<class T> T offbit(T s, int i) { return s & (~(T(1) << i)); }
template<class T> int cntbit(T s) { return __builtin_popcountll(s); }
/*************************************************/

/************** [MASTER CONTROLS - PHASE 1] **************/
auto TimeStart = chrono::steady_clock::now();
auto TimeEnd = chrono::steady_clock::now();
#define OImode 227420978
#define MultiTest 227420978
#define Interactive 227420978

#undef OImode // Switch this off if submitting OI problems.
#undef MultiTest // Switch this off if submitting multi-test problems.
#undef Interactive // Switch this off if submitting interactive problems. Also required when you need to debug step-by-step.

void ControlIO(int argc, char* argv[]);
void TimerStart();
void TimerStop();
void Exit();
/*********************************************************/

/************** [GLOBAL VARIABLES] **************/
i64 n, ans = 0; vi a, Time; stack<i64> S;
/************************************************/

/************** [FUNCTIONS] **************/

void Input() {
	cin >> n; a.rsz(n); Time.rsz(n, 0);
	for (i64 i=0; i<n; i++) cin >> a[i];
}

void Solve() {
	for (i64 i=0; i<n; i++) {
		while (!S.empty() && a[S.top()] < a[i]) {S.pop();}
		if (!S.empty()) {
			if (S.top() != i - 1) Time[i] = Time[S.top()] + 1;
			else Time[i] = 1;
		}
		S.push(i);
	}
	cout << *max_element(Time.begin(), Time.end());
}
/*****************************************/

/************** [MAIN] **************/
int main(int argc, char* argv[]) {
	ControlIO(argc, argv);

	#ifndef Interactive
		ios_base::sync_with_stdio(0); cin.tie(NULL);
	#else
		ios_base::sync_with_stdio(0);
	#endif

	#ifndef MultiTest
		Input(); TimerStart();
		Solve(); TimerStop();
	#else
		int T; cin >> T; TimerStart();
		while(T--) {Input(); Solve();}
		TimerStop();
	#endif

	return 0;
}
/************************************/

/************** [MASTER CONTROLS - PHASE 2] **************/
void ControlIO(int argc, char* argv[]) {
	#ifdef Akikaze
	time_t t = time(0);
	tm* now = localtime(&t);
	cout << "Source code by #Team4T-Akikaze.\n";
	cout << "Current time: ";
	cout << (now->tm_year + 1900) << '-'
	     << (now->tm_mon + 1) << '-'
	     <<  now->tm_mday << " | "
	     <<  now->tm_hour << ":"
	     <<  now->tm_min << ":"
	     <<  now->tm_sec
	     << "\n\n";
	if (argc > 1) assert(freopen(argv[1], "r", stdin));
	if (argc > 2) assert(freopen(argv[2], "w", stdout));
	#elif OImode
	freopen("FILENAME.INP", "r", stdin);
	freopen("FILENAME.OUT", "w", stdout);
	#endif
}

void TimerStart() {
	#ifdef Akikaze
	TimeStart = chrono::steady_clock::now();
	#endif
}

void TimerStop() {
	#ifdef Akikaze
	TimeEnd = chrono::steady_clock::now();
	auto ElapsedTime = TimeEnd - TimeStart;
	cout << "\n\nTime elapsed: " << chrono::duration<double>(ElapsedTime).count() << " seconds.\n";
	#endif
}

void Exit() {
	TimerStop(); exit(0);
}
/*********************************************************/

/*********************************************************************************************************************************************************************************************************
 * ti;.                               .:,:i:         :,;;itt;.        fDDEDDEEEEEEKEEEEEKEEEEEEEEEEEEEEEEE###WKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWW#WWWWWKKKKKEE      :,:.    f::::. .,ijLGDDDDDDDEEEEEEE*
 *ti;.                               .:,:i:          .:,;itt;:      GLDEEGEEEEEEEEEEEEEEEEEEDEEEEEEEEEEE#W#WEKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWKKKKKKG.     .::.      f:,...,ijLGDDDDDDDDEEEEEE *
 *ti;.                               .:,:i:            :,;;iti,    :fDDEEEEEEEEEEEEEEEKEEEEDEEEEEEEEEEEW##WEEEKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWWKKKKKKEG     .::.       .f,::,ijLGDDDDDDDDEEEEEE *
 *ti;.                               .:,:i:             .,,;iti;.  LDDEEEEEEEEEEKEEEEWEEEDDEEEEEEEEEEE#WWWEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWWWWWKKKKKEDj    .::.        .:L;;ijfGDDDDDDDDDEEEEE *
 *ti;.                               .:,:i:              .:,;;iii:LLDEEEEEEEEEEEKEEEEEEEEDEEEEEEEEEEEW#WWEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKWWKWWWWWWWWWWWWWWKKKKKKKEL    .::.         .:;LijLGGDDDDDDDDEEEEE *
 *ti;.                               .:,:;:                :,;;ittfDEEEEEEEEEEEEEEEEKEEEGEEEEEEEEEEEKWWWEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWWWWKKKKKKKELj   .::.          :,;jffGGDDDDDDDDDEEEE *
 *ti;.                               .:,:i:                 .,;;tGGDEEEEEEEEEEEKEEEKEEEDEEEEEEEEEEEEWWWEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWKWWWWWWKKKKKKKEEL   .::.          .:;itDGGDDDDDDDDDEEEE *
 *ti;.                               .:::;:                   :;ifDEEEEEEEEEEEEKEEEKEEEEEEEEEEEEEEEWWWEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WWWKKKKKKKKEEf   .::.           :,itfGEDDDDDDDDDDDEE *
 *ti;.                               .:::;:                    :GGEEEEEEEEEEEKEKEEKEEEEEEEEEEEEEEEEWWEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKKKKEEDG  .::.           .,;jfLGKDLDDDDDDEEDD *
 *ti;.                               .:::;:                     fDEEEEEEKKKKKKKKKEKEEEEEEEEEEEEEEE#WEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#KKKKKKKKKKEEf .:::.           .,;tfLGDEDDDDDDDDEEE *
 *ti;.                                :::;:                    fDEEEEEEKKKKKKKKKKWKEEEEEEEEEEEEEEEWKEEEEEEEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKW##KKKKKKKKKEEft :::.           .,;tfLGDDDKDDDDDDDDD *
 *ti;.                                .::;:                    fDEEEEEEKKKKKKKWKKKKKEEEEEEEEEEEEE#WEEWEEEEEDEEDEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKKKEEGG :,:.           .,;tfLGGDDDKDDDDDDDD *
 *ti;.                                .:.;:                   tGDEEEEKKKKKKKKKKKKKKKKKEEEEEEEEEEEWEEKWEEEEEEEDEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKWWWKKKKKKKEEDf :::.           .,;tfLGGDDDDEDDDDDDD *
 *ti;.                                .::;:                   fDEEEEEKKKKKKKKKKKWKKKKKKKKEEEEEEEWWEEWEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKW##KKKKKKKEEEft.::.           .,;tfLGGDDDDDDEDDDDD *
 *ti;.                                .:.;:                  tGDEEEKKKKKKKKKKKKKKKKKKKKKKEKEEEEE#EEWWEEEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKW#WKKKKKKEEEGD:::.           .,;tfLGGDDDDDDDEDDDD *
 *ti;.                                .:.,.                  LDEEEEKKKKKKKKKKWKWKKKKKKKKKKKKEEEKWEKW#EEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKW##KKKKKKEEEEf,,:.           .,;tfLGGDDDDDDDDEDDD *
 *ti;.                               ..:.,.                 LGDEEEEKKKKKKKKKKWKKKKKKKKKKKKKKKKKWEEW#WEEEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEKEKKKKKKKKKKKKKKKK##KKKKKEEEEEfi;,.           .,;tfLGGDDDDDDDDDKDD *
 *tt;.                                .:.,:                 jDEEEEKKKKKKKKKKWWKKKKKKKKKKKKKKKKKWKE#WWEEEEEEEEEEEEEEWEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKKKKKKWWKKKKEEEEDfG;,:           .,;tfLGGDDDDDDDDDDKD *
 *tii,.                               .:.,.                tGDEEEEKKKKKKKKKKWWWKKKKKKKKKKKKKKKWKKWWWKEEEEEEEEEEEEEKEEEEEEEEEEEEEEEEEEEEEEEEEEEEEKKKKKKKKKKKW#KKKKEEEEDGGi;,.          .,;tfLGGDDDDDDDDDDDE *
 *ti;;,:.                             .:.,:                fDEEEEKKKKKKKKKKKWKKKKKKKKKKKKKKKKKWEK#WWKEEEEEEEEEEEEDEEEEEEEEEEEEEEGEEEEEEEEEEEEEEEEEEEKKKKKKKWWKKEEEEEEDDf;;;,.         .,;tfLGGDDDDDDDDDDDD *
 *tii;,,:..                           ...,.               ;LEEEEEKKKKKKWKKKKWKKKKKKKKKKKKKKKKKEKKW#WEEEEEEEEEEEEEjEEEEEEEEEKEEEEGEEEEEEEEEKEEEEEEEEEEEEEEEEE#WKEEEEEEDDf;;;;,:        .,itfLGGDDDDDDDDDDDD *
 *ti;,,,,,:.                          ...,.               LDEEEEKKKKKKKKKKKWWWKKKKKKKKKKKKKKKWKK#W#WEEEEEEEEEEEDDLEEEEEEEEEWEEEEDEEEEEEEEEKEEEEEEEEEEEEEEEEEWWEEEEEEEDDfj,,,,,:.      .,itfGGGDDDDDDDDDDDD *
 *tii,,,,::::.                        ...,:              .fDEEEEKKKKKKWKKKKWWWKKKKKKKKKKKKKKKEKKW#WWEEEEEEEEEEEKiKEEKEEEEEEWEEEEDEEEEEEEEEEEEEEEEEEEEEEEEEEEWWEEEEEEEDDLD:::,,,:.     .,ijfGGGDDDDDDDDDDDD *
 *ti;:::::::::..                      .:.,:              LDEEEEKKKKKKKWKKKKWWKKKKKKKKKKKKKKKKtKKWWWWKEEEEEEEEEDiiDEEEEEEEEWWEEEEEEDEEEEEEEEEEEEEEEEEEEEEEEEEEWKEEEEEDDDGL:. .:,,,:    .,ijLGGGDDDDDDDDDDDD *
 *tt;. .::::::::..                    ...,:             :fDEEEKKKKKKKKKKKKWW#KKKKKKKKKKKKKKKKfKKWWWWKEEEEEEEEDti,DEKEEEEEEWWEEEDEEEEEEEEEKEEEEEEEEEEEEEDEEEEE#WEEEEEGGDGf:.  .:,;,:.  .,ijLGGDDDDDDDDDDDDD *
 *tt;.   .:::::::..                   ...,:             GDEEEKKKKKKKKWKKKKWWWKKKWKKKKKKKWWWKDEKLWWWWKKEEEEEEDEi,LDEEEEEEEEWWEEEEEEEEEEEEEEEEEEEEEEEEEDEDEEEEEW#EEEEDDDDGf,.    :,,,:...,ijLGGGDDDDDDDDDDDD *
 *tt;.    .....::::..                 ...,:             fDEEEKKKKKKKKWKKKKWWWWKKKWKKKKKKKKKKfWKiWWW#KKEEEEEEEi;.EDfEEEDEEiWWEEEEEEEEEEEEDGKEEEEEEEEEEDEEEEEEEWWEEEEDDDGGLi.     .,;,:::,ijLGGGDDDDDDDDDDDD *
 *tt;.      ....:::::.                ...,.            iDEEEEKKKKKKKKWKKWKWWWWWKKWWWKKKKKKKKtWKt#WWWKKEEEEEDji..DDKDDEDEGiWKEEEEEEEEEEDDEjEEEEEEEEEEEDEEEEEEEKWKEEDDDDGGff.      .:,;,,;ijLGGGDDDDDDDDDDDD *
 *tt;.        ....::::..              .:.,:           .LDEEEKKKKKKKKKKKKWWWWKWWWWWWWWWWKKKKWtKKiDWWWKKKEEEEKi:..DEDDDDDDiiWKEEEEEEEEEEDDEijDEEEEEKEEEEEEEEEEEEWWEEGDDDGGLG.       .:,;;iijLGGGDDDDDDDDDDDD *
 *tt;.          .....:::..            ...,.           .fEEEEKKKKKKKKWKKKKWWWWWWWWWWWWWWKWKKKiKDiLWWWWKEEEEEi,..fD:DDDDDti;WEEEEEEEEEEKDDi:iDDEEEEWEEEEEEEEEEEE#WEEGDDDDGGG.         :,iitjLGGGDDDDDDDDDDDD *
 *tti.            .....:::..          ...,.           GDEEEKKKKKKKKKWKKKWWW#WWWWWWWWWWWKWKKjiEjitWWWKKWEEEDi...DDLDDDDji;;WEEEEEEEEEEEDEj.iDDEEEEWEEEEEEEEEEEEWWEEDDDDDDGf.          .,;tjfLGGDDDDDDDDDDDD *
 *tti.              ....::::..        ...,.           fEEEKKKKKKKKKKKKKKKW#WWWWWWWWWWWWWWWWtiEiiiWWWKKEWKEi....D.EDDDEi;.fWEEEEEEEEEEDDfL.;EDDEEEWEEEEEEEEEEEEWWEEEDDDDDGf.           :;ijfLGGDDDDDDDDDDDD *
 *tti.                ....::::..      ...,.          LDEEEKKKKKKKKKKKKKKWWWWWWWWWWWWWWWW####WKiiiWWWKKKEEK,...:E:DDDEii..GWEEEEEEEEDWDDiL.,KDDEEEWEEEEEEEEEEEEWWKEEDDDDDGf:           .,itfLGGDDDDDDDDDDDD *
 *tti.                 .....:::..     ...,.          fDEEEKKKKKKKKKWKKKKWWWWWWWWWWWWW########WLiiWWWKKKEEjD...G,DDDDi;...EWEEEEEEEEDKDEii..LDDEEEWEEEEEEEEEEEEWWWEEDDDDDGfi           .,;tfLGGGDDDDDDDDDDD *
 *tti.                   .....:::..   ...,.         iGEEEKKKKKKKKKKWKKKKWWWWWWWWWWWW###########KiWWWKKEEE,.D..D.DDDii:...KKEEEEEEEEEDDj:...tEDEEEWEEEEEEEEEEEEWWWEEEDDDDDLL           .,;tjLLGGDDDDDDDDDDD *
 *tti.                     ....::::......:.         LEEEKKKKKKKKKKWWKKKWWW#KWWWWWWWW#####W####W##KWWKKEEL..:D.jjDDi;,....KKEEEEEEEDfDDi...:iKDEEEWKEEEEEEEEEEEWWWEEEEDDDDLG           .,;tjLLGGDDDDDDDDDDD *
 *tti.                        ...::::::..,.        :GEEEKKKKKKKKKKKKWWWWW##WWWWWWWWW##WKWK#W#W####WWKEEK.....G.DDti,.....KKEEEEEEDWGDf.,...iKDEEEWWEEEEEEEEEEEW#WEEEEEDDDGL           .,;tjLLGGDDDDDDDDDDD *
 *tti.                         ....::::::,.        GDEEKKKKKKKKKKKKKWWWW###WWWWWWWWWW#WWWK###W#####WKEKK.....jDDL;;......KKEEEEEEEEEDi.f...;KDEEEWWEEEEEEEEEEEWWWWEEEEEDDGf           .,;tjLLGGDDDDDDDDDDD *
 *tti.                           ....:::,,.       .LEEEKKKKKWKKKKKWWWWWW###WWWWWWWWWW#WWKW#WW##W#WWWKEKD:....:DD:;......;KEEEEEEEKiDD..f...,KKEEEWWEEEEEEEEEEEWWWWEEEEEDDDf           .:;tjLLGGGDDDDDDDDDD *
 *tti.                             ...::,,,:.     GDEEKKKKKKKKKKKKWWWWWWW#WWWWWWWWWWW#KjKWWWWWWWWWWWWEK.j,..;fD.;.......fKEEEEEDKG:Di..,....DKEEEWWEEEEEEKEKKKWWWWEEEEEEDDf           .:;tjLLGGDDDDDDDDDDD *
 *jti.                              ...::,,,,:.  .fEEEKKKKKWKKKKKKWWWWWWW#WWWWWWWWWWK#KKKWWWWWWWWWWWWWK..f:.:G.,:.......EKEEEEEKK;:E:.......fKEEEWWKEKEKKKKKKKW#WWEEEEEEDDf:          .,;tfLLGGDDDDDDDDDDD *
 *tti.                               ...:,,,;;,: iDEEKKKKKWKKKKKKKWWWWWWW#WWWWWWWWWWK#WDKWWKKWWWWWWWWWE..;G:G..,........KKEEEEEKi.Gi..:.....tKEEKWWWKKKKKKKKKKW##WKEEEEEEDfi          .,;tfLLGGGDDDDDDDDDD *
 *tti.                               ....::,,;;;,LEEKKKKKKWKKKKKWWWWWWW###WWWWWWWWWWKWWDKWEEEWKKWWWWWKKj.:LG..;.........EKEEEEKG;.G...;.....;KKEKWWWKKKKKKKKKKW##WWKEEEEEDfL          .,;tfLGGGDDDDDDDDDDD *
 *jti.                                ...::::,;ijDEEKKKKKWKKKKKKWKWWWWW##WWWWWWWWWWWKK#KKGDGDWEEWKKWKKGE,.i;.:.........:EKEEEKE;.:L...j.....,KWEKWWWKKKKKKKKKK####WKKEEEEDLG          .,;tfLGGGGDDDDDDDDDD *
 *jti.                                ...:...,,;GEEKKKKKWWKKKKKWWWWWWWW###WWWWWWWWWKKKWWKiLGGEDEDEKGKKiEG..;...........jKEEEKK;:.G....,.....:KKEWWWWKKKKKKKWKK####WKKKKEEEGL          .,;tfLGGGGDDDDDDDDDD *
 *jti.                                ...:.  .:,GEEKKKKKWKKKKKWWWWWWWW####WWWWWWWWWKKKWWKii;fDLGDK: EEi:E:.............EKEEKK;;..L...........KKKWWWWKKKKKKKWKK####WKKKWKEEDf          .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    ,EEKKKKKWWKKKKKWWWWWWWWW###WWWWWWWWKKKKfWWLt;i,. fi  EG..D:.............EKEKK;;..t....:.......KWKWWWWKKKKKKKWKK####WKKKWEEEDf:.        .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    GEEKKKKKWKKKKKWWWWWWWWW####WWWWWWWKKKKKt;KKEfff     .;t.................KKKKi;:..GtGGfG.......KWWWWWWKKKKKKKWKK###WWWKKKKEEEf,,:       .,;tfGGGGDDDDDDDDDDD *
 *jti.                                ...:.    GEKKKKKWWKKKKKWWWWWWWWWW##WWWWWWWKKKKKKt;EiKKKK,   ...t................jEKKG;;..,.....,LGi....KWWWWWWKKKKKKWKKKW####WKKKKKEEL,,,:.     .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.  .GEEKKKKKWKKKKKWWWWWWWWWW###WWWWWWWKKKKKKtiE::tGG........................EEEj;;...,.........:D..DKWWWWWWKKKKK#KKW###W#WKKKKKEEfj:,,,:.   .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.   DEKKKKKWWKKKKKWWWWWWWWW####WWWWWWWKKKKKKiiE:::.::.......................EEi;;...j.....f......:iDKWWWWWWKKKKK#WW######WKKKKKEELG :,,,,:. .,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:.  fEEKKKKWWKKKKWWWWWWWWWWW###WWWWWWWWKKKKKK;tE::..........................DD;.;,.::......;........EWWWWWWWKKKKW#WW#####WWKKKWKKELG  .:,,,:::,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:. .DEKEKKKWWKKKKWWWWWWWWWWW###WWWWWWWWKKKKKE,iD::..........................D..,;.,;tLffi...........DWDWWWW#KKKWWWWW#####W#KKKWKEEGL    .:,;,,,;tfGGGDDDDDDDDDDDD *
 *jti.                                ...:. ;EEKKKKWWKKKKKWWWWWW#WWWW####WWWWWWKKKKKEL:iD:..........................j ..;..;;:.....i,........DKtWWWWWKKWWWWWW#####WWWKKKEKEDf     .:,;;;itfGGGDDDDDDDDDDDD *
 *jti.                                ...:. DEKKKKKWWKKKKWWWWWWW#WWWW####WWWWWWKKKKKEj:iG...............................:....................GKiWWWWWKKWW#WWW######WWKKKKKEEf       .,;iitfGGGDDDDDDDDDDDD *
 *jti.                                ...:.:EKKKKKWWKKKKKWWWWWWW#WWW#####WWWWWKWKKKKEi:if:.................................iEKEKKKKKKDj......DKiWWWWWKWK##WW#######WWKKK:KEEL        .:;itfGGGDDDDDDDDDDDD *
 *jji.                                ...:,DEEKKKWWWKWKKWWWWWWWWWWWW#####WWWWWWWKKKKEi:it..................................j.  KKKKKKKKKKKf..DKiWWWWWKWW##WW#######WWKKK,KEEf         .,;tfGGGDDDDDDDDDDDD *
 *jji.                                ..L:iDEEKKKWWKKKKKWWWWWWWWWWWW#####WWWWWKWKKKKKi.i;..................................  . KKKWWWWWWWWK..DGiWWWWWKK##WWW#####W#WWKKKjEKEL,        .:;tfGGGDDDDDDDDDDDD *
 *jji.                               .f:::EEEKKKWWWKKKKKWWWWWWWWWWWW#####WWWWWKWKKKKK;.i,.................................::  KKEKWWWWWWfWK..EiiWWWWWKWW#WW##########KKKD,KELj        .:;tfGGDDDDDDDDDDDDD *
 *jji.                             .t::::,DEEKKKWWKKKKWWWWWWWWW#WWWW#####WWWWKKWKKKEK;.i:.................................GDDEEEKKKWWWWWtWWD.E;iWWWWWW###WW#########WWKKK.EEDG        .:;tfGGGDDDDDDDDDDDD *
 *jji.                          . j..::::EKEKKKWWWKKKKWWWWWWWWW#WWW######WWWWKKWKKKEK;.t:.................................ELLEDDEEEWWWWEtWK,.KiiWWWWWW###W##########WWKKK:EEEG     .;tjfLLGDDDDDDDDDDDDDDD *
 *jji.                          i.::::::,EEEKKWWWKKKKKWWWWWWWWW#WWW#####WWWWWKWKKKKEE,.t..................................DfiEGDDDEEKKKttKWG.KiiWWWWW##WWW##########WWKKK:fEEL  ,fGGGDDDDDDDDEEEDDDDDDDDDD *
 *jji.                        .;:..:::::DEEEKKWWWKKKKKWWWWWWWWW#WWWW####WWWWWWWKKKKED,.t..................................ifjDDGGEGDKK.ttKKE.DiWWWWW###WW##########WWWKKK:.KELiLGGGGDDDDDDDDDDDDEEEDDDDDDD *
 *jji.                       i.:.::::::,KEEKKWWWKKKKKKWWWWWWWWW#WWWW####WWWWWWWKKKKEL:.j..................................GGf,;ifLLED .iiKKi:fWWWWWW##W#W##########WWWKKK:.KKLGGDDDDDDDDDDDDDDDDEDDEEDDDDD *
 *jji.                     .j:.::::::::EEEKKKWWWKKKKKKWWWWWWWW##WWW#####WWWWWWWKKKKKf:.f..................................:EEfftf .,. ;iE,..jWWWWWWW###W############WWKKK,:KKGDDDDDDDDDDDDDDDDDDDDDDDEDDDD *
 *jji.                    .:.::::::::,,EEEKKWWWKKKKKKKWWWWWWWW##WWW#####WWWWWWWKKKKKt..G....................................EEELL;   .j....tKWWWWWWW################WWWKKtfGKGEDDDDDDDDDDDDDDDDDDDDDDDEEDD *
 *jji.                   :...:::::::,,jEEKKWWWWKKKKKKWWWWWWWWW##KWW#####KWWWWWWKKKKEi..D....................................:jEEE.........;KKWWWWWWWW#WW##W##########WWKKDLGKEKDDDDDDDDDDDDDDDDDDDDDDDDDED *
 *jji.                  i:.::::::::,,,EEEKKWWWWKKKKKWWWWWWWWWW##WWW#####WWWWWWWKKKKKi..D......................................:::::......,KKKWWWWWWWWW#####W########WWWKKKGGKKEGGGGGGGGDDDDDDDDDDDDDDDDDDE *
 *jji.                 i..:::::::::,,tEEKKWWWWKKKKKWWWWWWWWWWW##WW######WWWWWWWKKKKKi..D......................................::::......:EKKKWWWWWWWWWWW##WW########W#WKKWGGKKGGGGGGGGGGGGGGGDDDDDDDDDDDDD *
 *jji.                .:::::::::::,,,EEEKKWWWWKKKKKWWWWWWWWWWW##WW#####WWWWWWWWKKKKKi..D....................................:::::::::..tELii;KWWWWWWWWWW##WW######WWWWWWKWGGGKGGGGGGGGGGGGGGGGGGGGGGGGGGDG *
 *jjt.                :.::::::::,,,,fEEKKWWWWKKKKKKWWWWWWWWWW###WW####WWWWWWW#WKKKKKi..D....................................:::::::.:.,;;;;;;,KKWWWWWWWWW#WW########WWWKKWGGGKGGGGGGGGGGGGGGGGGGGGGGGGGGGG *
 *jji.               ;.::::::::,,,,;EEEKWWWWWKKKKKWWWWWWWWWWWW##WW###WKWWWWWK#WKKKKKi..G......................................:::::::,;;;;:...KKKWWWWWWWWWKWW#######WWWWKKGLGKDGGGGGGLLGGGGGGGGGGGGGGGGGGG *
 *jjt.              f.:::::::::,,,,fEEKKWWWWWKKKKKWWWWWWWWWWW###WW##WKKWWWWWW#WKKKKK;.jt........i.............................:::::::;j;;....:E.KKKWWWWWWWKWW#####W#WWWWKKLLGWEEGGGGGLGGGGGGGGGGGGGGGGGGGG *
 *jjt.             ...:::::::,,,,,;DEEKWWWWWKKKKKWWWWWWWWWWWW####WWWKKKWWWWWWWWKKKKK;.E;.........t.............................:::::ii;;.....D...KKWWWWWWWKWW#####WWEWWWKKGGGEKKGGGGGLGGGGGGGGGGGGGLGGGGGG *
 *fji.             ;.:::::::,,,,,;LEEKKWWWWWKKKKKWWWWWWWWWWWW####KWKKKKWWWWWWWWKKKKKi.D;..........j.............................:::tt;,.....:.....KKWWWWWWKWWWW##WWWGWWWKKGGGGKEGGGGGGGGGGGGGGGGGGGLLGGGGL *
 *fji.            t::::::::,,,,,,;EEEKWWWWWKKKKKKKWWWWWWWWWWW##WKWKKKKKWWWWWWWWKKKKKi:D;............j...........................::LL;,.............KKWWWWWKWWWWWWWWWGWWWKKGGGGKGGGGGGGGGGGGGGGGGGGGLLGGGGL *
 *fjt:            .:::::::,,,,,,,DEEKWWWWWWKKKKKKKWWWWWWWWWWWWKKWKKKKKKWWWWK#WWKKKKWitE;........... ............................:G;;:...............KKKWWKKWWWWWWWWWGWWWKKGGGGWGGGGGGGGGGGGGGGGGGGGGGGGGGL *
 *fjji;:.       .f:::::::,,,,,,,;EEEKWWWWWWKKKKKKWWWWWWWWWWWKKKKKKKKKKKWWKWWWWWKKKKWGKD;........................................L;;..................DKKWKKWWWWWWWWWGWWWKKDGGGKDGGGGGGGGGGGGGGGGGGGGGGGGGG *
 *fjjtii;,:.     :::::::,,,,,,,;EEEKWWWWWWKKKKKKWWWWWWWWWWKKKKKKKKKKKKWWWWWW#WWKKKKWiEj;......................................:i,;....,...............;KKEKWWWWWWWWWGKWWKKDDGGDEGGGDGGGGGDGGGGGGGGGGGGGGGG *
 *fjtiiiii;;:.  j::::::,,,,,,,;;EEEKWWWWW#KKKKKWWWWWWWWWKKKKKKWKKKKKKKWWWWWWWWWKKKKWtEL;:....................................;;;:...,;j................:KEEWWWWWWWWWDDWWKKDDDDDKDDDDDDDDDDDDDDDGGGGGGGGGGG *
 *fjti;;iiii;;,:::::::,,,,,,,,;EEEKWWWWWWWKKKKWWWWWWWWKKKKKKKWKKKKKKKWWWWWWW#W#KKKKWEEii;...................................f;:....,;L...................EEKWWWWWWWWDDWWKKDDDDDKEDDDDDDDDDDDDDDDDDDDDDGGGG *
 *fjt,,,;;;;ii;f::::::,,,,,,,;;EEKWWWWWWWKKKKKWWWKWWKKKKKKKKKKKKKKKKKWWWWWWW#W#KKKKWKEij;:...............................:G;,.....,;f....................:tKKWWWWWWWDDWWKKDDDDDKKDDDDDDDDDDDDDDDDDDDDDDDDD *
 *jjt. ..:,;;;;,::::,,,,,,,,;;GEEWWWWWWWWKKKKWKKWKKKKKKKKKKKKKKKKKKKKWWWWWWW#W#KKKKWEDi;j;............................,Li;L;;;..,;;f........................KKKKWWWKDDWWKKDDDGDKKGGGGGGGGDGDDDDDDDDDDDDDDD *
 *fjt.    .:,,,:::::,,,,,,,;;;EEKWWWWWWWKKKKKKWKKKKKKKKKKKKKKKKKKKKKWKKKWKW##W#KKKKWEti;;G;........................tEEEL;;;;;;;;;;L..........................DKKKKKEDDWWKEDGftiLE;;;;itjLGGGGGGDDDDDDDDDDD *
 *fjt.       .j::::,,,,,,,;;;DEEWWWWWWWWKKKKWKKKKKKKKKKKKKKKKKKKKKKKWKKWWWK##W#KKKKKEii;;;L;...................iDEEEEEEKKi;j;;;;jD.....:......................,KKKKDGGEKKE:::::;E::::::::::,tLGGDDDDDDDDDD *
 *fjt.       .;:::,,,,,,,;;;;EEKWWWWWWWWKWKKKKKKKKKKKKKKKWKKKKKKKKKKWKKWWWW#WW#KKKKKKii;;;;f;.............:tDEEEEEKKKKKKKKEti;;;L...............................EEKf;:iKKE::::::E::::::::::::::ifDDDDDDDDD *
 *fjt:        :::,,,,,,,,;;;DEEWWWWWWWWWEKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKWWWW####KKKKKEiii;;;;f,.........iDEEEEKKKKKKKKKKKKKKKf;iG......i..........................fK::::KKE::::::E::::::::::::::::,tGGDDDDD *
 *fjt:       t:::,,,,,,;;;;iDEKWWWWWWKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKWWWW####WKKKKLiii;;;;;L,....,Li;EDEEEEKKKKKKKKKKKKKKKKiG......;:...........................:i:::KKE:::::,E,::::::::::::::::::iGDDDD *
 *jjt.       f::,,,,,,,;;;;GEEWWWWKEEKEKKKKKKKKKKKKKKKKWKKKKKKKKKKKWWKWWWWW###WWKKKKiii;;;;;;;G,;L;;iiEEEEEEEKKKKKKKKKKKKKWWKE......;t.........:....................j::KEE:,::,,D,,::::,,,,,,:::::::::tDDD *
 *fjt:.      ,::,,,,,,,;;;;EEWWKEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKWWKKWWWWW#W#KKKKKKiiiiii;;;;;i;;iiiEEKEEKKWKKKKKKKWKKKKKWWWGi;...;t......,;;;;,....................:,EEE,,,,,,D,,,,,,,,,,,,,,,,::,::::tG *
 *fjt:.     ,::,,,,,,,;;;;DEKEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWW#W#KKKKKKiiiii;;i;;;;;iiiKKKEKKKKWWKWWWWWWKKKKWWWWW;;;:;L.....;;;;;;;;;....................,KEE,,,,,,E,,,,,,,,,,,,,,,,,,,,,,,,; *
 *fjt:.     f:,,,,,,,;;;;jEDEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWW#W##KKKKKKiiiiiiii;i;;iiiEKKKKKKKKWKWWWWWWWWKKKWWWWWKi;;i.....,jEEfGi;;;;;...................EED,,,,,,E,,,,,,,,,,,,,,,,,,,,,,,,, *
 *fjt:.    .f::,,,,,,;;jEEDEEEEEEEEEEKKKKKKKKKKKKKKKWKKKKKKKKKKKKKWWWKWWWWW###KKKKKLiiiiiiiiiiiiiiEEKKKKKKKKWWWWWWWWWWWWKWWWWWWGi;i;,..;jDDDKEGi;;;;;;:................EED,,,,,,D,,,,,,,,,,,,,,,,,,,,,,,,, *
 *fjt:.  .. ;::,,,,,;;EDDEEEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWKKW#WW####KWKKKiiiiiiiiiiiiijKKKKKKKKKKWWWWWWWWWWWWWWWWWWWWWt;i;;;;i;DDDDDDGi;;;;;;;;:.............EDf;,,,;,G;;;;;;;;;;;;;;;,,,,,,,,,, *
 *fjt:......:,,,,,,;LDDDEEEEEEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKKKWWWWKWWWW####KKKKKiiiiiiiiiiijKEKKWKKKKKKKWWWWWWWWWWWWWWWWWWWWWWiLiii;i;DEEEEDDE;i;;;;;;;;;:..........EDi,;;;;;L;;;;;;;;;;;;;;;;;;,,,,,,, *
 *fjt:......:,,,,,;EDDDEEKEEEEEEEEEKKKKKKKKKKKKKKKWKKKKKKKKKKKKKKWWWWKKWWW##W#KWKKWEiiiiiijGKKKKKWWKKKKKKKKWWWWWWWWWWWWWWWWWWWWWWKi;iiiiDDEEEEEEDEi;;;;;;;;;;;;;,:.....ED;;;;;;;j;;;;;;;;;;;;;;;;;;;;;;;,, *
 *fjt:.....t,,,,,;DDDDEEEKEEEEEEEEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWKKKWWWW##WKWKKWKiiiKKKKKKKKKWWKKKKKKKKWWWWWWWWWWWWWWW#WWWWWWWWWiiiiifLEEEEEEEEDi;i;;;;;;;;;;;;.....DD;;;;;;;i;;;;;;;;;;;;;;;;;;;;;;;;; *
 *fjt:.....G,,,,,GDDDEEEEEEEEEEEEKKKKKKKKKKKKKKKKWKKKKKKKKKKKKKKKWWWKKKWWW###WKWKKWKitKKKKKKKKKWKKKKKKKKKKWWWWWWWWWWWWWW###WWWWWWWWEiiiiiiiEEEEEEEEDGiiii;;;;;;;;;.....GD;;;;;;;i;;;;;;;;;;;;;;;;;;;;;;;;; *
 *fjt:.....L,,,,;GDDDEEEEEEEEEEKEKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKWWWWWDGWWW###KKWWKWKKKKKKKKKKKKKKKKKKKKKKKWWWWWWWWWWWWW####WWWWWWWWWiiiiiiiiEEEEEEEEEEDi;i;;;;;;;;.....Lj;;;;;;i;iiiiii;;;;;;ii;;;;;;;;;;; *
 ***********************************************************************************************************************************************************************************************************/