#include <iostream>
#include <vector>
#include <algorithm>
template <typename T>
void printVec(const std::vector<T>& _v) {
for (const T& x : _v) std::cout << x << " ";
std::cout << "\n";
}
void solve(std::vector<int>& p, int maxOps) {
// Determine the largest element
int highestIdx = 0, idx = 0;
for (const auto& val : p) {
if (val > p[highestIdx]) highestIdx = idx;
++idx;
}
for (int i = 0; i < maxOps; i++) {
int left = highestIdx - 1, right = highestIdx + 1;
// Left side
while (left >= 0) {
if (p[left] != p[highestIdx]) break;
p[left--]--;
}
// Right side
while (right < p.size()) {
if (p[right] != p[highestIdx]) break;
p[right++]--;
}
p[highestIdx]--;
// printVec(p);
}
int countZero = std::count(p.begin(), p.end(), 0);
if (countZero == p.size()) std::cout << "Yes\n";
else std::cout << "No\n";
}
int main() {
int numTestCases;
std::cin >> numTestCases;
for (int i = 0; i < numTestCases; i++) {
int pLen, tmp;
std::cin >> pLen;
std::vector<int> p;
for (int j = 0; j < pLen; j++) {
std::cin >> tmp;
p.push_back(tmp);
}
solve(p, pLen);
}
return 0;
}