A.解释一下题意给定m,pow(2,m)<n,给前pow(2,m)个数字-1,因此如果i如果不是pow(2,m)的数就修改不能单独修改(4,3,2,1)(需要把1,2,3号元素都修改到1才能满足),(但是3不能单独修改,会让4一起修改,因此他们之间的差值无法改变),如果a[i]>a[i+1],就输出no,反之yes.
// Problem: A. Sorting with Twos
// Contest: Codeforces - Codeforces Round 907 (Div. 2)
// URL: https://codeforces.com/contest/1891/problem/A
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <iostream>
#include <cstring>
#include <iomanip>
#include <ctime>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void solve() {
int n;
cin>>n;
bool flag=false;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<n;i++){
if( (i&(i-1)) && a[i]>a[i+1]){//判断i是不是二次幂。
flag=true;
}
}
if(flag){
cout<<"NO"<<'\n';
}else{
cout<<"YES"<<'\n';
}
}
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int q;
cin >> q;
while (q--) {
solve();
}
return 0;
}