Can anyone explain this code

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 100000
int x1[MAX][3];
int x2[MAX];
int x3[MAX];
int l[MAX];

ll result(int l[100000],int n){
ll min_gift = 0;
for (int i = 0; i < n; i++) {
min_gift += l[i];
}
return min_gift;
}

int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int t ;
cin>>t;

int n;
while(t--){
cin >> n;
for (int i = 0; i < n; i++)
  cin >> x3[i];
if (n == 1) {
    cout << 1 <<endl;
    return 0;
}
for (int i = 0; i < n - 1; i++) {
    if (x3[i] < x3[i + 1]) {
        x1[i][++x1[i][0]] = i + 1;
        x2[i + 1]++;
    } else if(x3[i] > x3[i + 1]) {
        x1[i + 1][++x1[i + 1][0]] = i;
        x2[i]++;
    }
}
stack<int> st;
for (int i = 0; i < n; i++) {
    if (x2[i] == 0) {
        l[i] = 1;
        st.push(i);
    }
}

while (!st.empty()) {
    int right = st.top();
    st.pop();
    for (int j = 1; j <= x1[right][0]; j++) {
        l[x1[right][j]] = max(l[x1[right][j]], l[right] + 1);
        x2[x1[right][j]]--;
        if (x2[x1[right][j]] == 0) st.push(x1[right][j]);
    }
}

ll final_result=result(l,n);

   cout <<final_result << "\n";

}}

Have to see the question first man…