#include <bits/stdc++.h>
using namespace std;

vector<int> NGE(vector<int>v){
    vector<int>nge(v.size());
    stack<int>s;
	for(int i=0;i<v.size();i++){
	    while(!s.empty() && v[i]>v[s.top()]){
	        nge[s.top()]=i;
	        s.pop();
	    }
	    s.push(i);
	}
	while(!s.empty()){
	    nge[s.top()]=-1;
	    s.pop();
	}
	return nge;
}
vector<int> PGE(vector<int>v){
    vector<int>pge(v.size());
    stack<int>st;
    for(int i=v.size()-1;i>=0;i--){
        while(!st.empty() && v[i]>v[st.top()]){
            pge[st.top()]=i;
            st.pop();
        }
        st.push(i);
    }
    while(!st.empty()){
        pge[st.top()]=-1;
        st.pop();
    }
    return pge;
}

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--){
	    int n;
	    cin>>n;
	    vector<int>v(n);
	    for(int i=0;i<n;i++){
	        cin>>v[i];
	    }
	    int sum=0;
	    vector<int> nge=NGE(v);
	    vector<int> pge=PGE(v);
	    for(int i=0;i<n;i++){
	        int id1=pge[i]==-1?0:pge[i]+1;
	        int id2=nge[i]==-1?n-1:nge[i]-1;
	        sum+=(abs(id1-i)+1)*(abs(i-id2)+1)*v[i];
	    }
	    cout<<sum<<endl;
	}
}
