In the 2050 Conference, some people from the competitive programming community meet together and are going to take a photo. The n people form a line. They are numbered from 1 to n from left to right. Each of them either holds a cardboard with the letter 'C' or a cardboard with the letter 'P'.

Let C=\\{c_1,c_2,...,c_m\} (c_1<c_2<… <c_m) be the set of people who hold cardboards of 'C'. Let P=\\{p_1,p_2,...,p_k\} (p_1<p_2<… <p_k) be the set of people who hold cardboards of 'P'. The photo is good if and only if it satisfies the following constraints: 

  1. C∪ P=\{1,2,...,n\} 
  2. C∩ P =∅ . 
  3. c_i-c_{i-1}≤ c_{i+1}-c_i(1< i <m). 
  4. p_i-p_{i-1}≥ p_{i+1}-p_i(1< i <k). 



Given an array a_1,…, a_n, please find the number of good photos satisfying the following condition: $$$∑_{x∈ C} a_x < ∑_{y∈ P} a_y.$$$

The answer can be large, so output it modulo 998 244 353. Two photos are different if and only if there exists at least one person who holds a cardboard of 'C' in one photo but holds a cardboard of 'P' in the other.

Input

Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 200 000). Description of the test cases follows.

The first line of each test case contains a single integer n (1≤ n≤ 200 000).

The second line contains n integers a_1, a_2, …, a_n (1 ≤ a_i ≤ 10^9).

It is guaranteed that the sum of n over all test cases does not exceed 200 000.

Output

For each test case, output the answer modulo 998 244 353 in a separate line.

Example

Input


3
5
2 1 2 1 1
4
9 2 2 2
1
998244353


Output


10
7
1

Note

For the first test case, there are 10 possible good photos satisfying the condition: PPPPP, CPPPP, PCPPP, CCPPP, PCCPP, PCPCP, PPPPC, CPPPC, PCPPC, PPPCC.

For the second test case, there are 7 possible good photos satisfying the condition: PPPP, PCPP, PCCP, PPPC, PCPC, PPCC, PCCC.
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
#include<map>
#include<vector>
#include<string>
#include<math.h>
#include<time.h>
#include<set>
using namespace std;
using ll = long long;
typedef pair<ll, ll> P;
constexpr ll mod = 998244353;
ll n, m, k;
ll T;
ll pre[300000];
ll pre2[300000];
ll a[300000];
int main() {
    cin.sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> T;
    while (T--)
    {
        cin >> n;
        for (int i = 0; i < n; i++)cin >> a[i];
        for (int i = 0; i < n; i++) {
            pre[i + 1] = pre[i] + a[i];
            pre2[i + 2] = pre2[i] + a[i];
        }
        ll sum = pre[n];
        ll ans = 0;
        int mi = -1;
        int ma = n + 1;
        while (ma - mi > 1) {
            int md = (mi + ma) / 2;
            if (pre[md] * 2 > sum) ma = md;
            else mi = md;
        }
     
        ans += n + 1 - ma;
        for(int st=0;st<=1;st++)
            for (int en = n; en >= n - 1; en--) {
                if (en -st < 2)continue;
                for (int p_st = st + 1; p_st < en; p_st++) {
                    ll mi = st;
                    if ((mi & 1) != (p_st & 1))mi--;
                    ll mi_orig = mi;
                    ll ma = p_st + 2;
                    while (ma-mi>2)
                    {
                        ll md =  mi + ((ma - mi) >> 2 << 1);
                        ll cnd = pre[st] + pre[en] - pre[p_st] + pre2[p_st] - pre2[md];
                        if (cnd * 2 > sum)mi = md;
                        else ma = md;
                    }
                    ans += (mi - mi_orig) >> 1;
                    ans %= mod;
                }
            }
        cout << ans << '\n';
    }
}