#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;
}