A string s of length n (1 ≤ n ≤ 26) is called alphabetical if it can be obtained using the following algorithm:

  * first, write an empty string to s (i.e. perform the assignment s := ""); 
  * then perform the next step n times; 
  * at the i-th step take i-th lowercase letter of the Latin alphabet and write it either to the left of the string s or to the right of the string s (i.e. perform the assignment s := c+s or s := s+c, where c is the i-th letter of the Latin alphabet). 



In other words, iterate over the n first letters of the Latin alphabet starting from 'a' and etc. Each time we prepend a letter to the left of the string s or append a letter to the right of the string s. Strings that can be obtained in that way are alphabetical.

For example, the following strings are alphabetical: "a", "ba", "ab", "bac" and "ihfcbadeg". The following strings are not alphabetical: "z", "aa", "ca", "acb", "xyz" and "ddcba".

From the given string, determine if it is alphabetical.

Input

The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.

Each test case is written on a separate line that contains one string s. String s consists of lowercase letters of the Latin alphabet and has a length between 1 and 26, inclusive.

Output

Output t lines, each of them must contain the answer to the corresponding test case. Output YES if the given string s is alphabetical and NO otherwise.

You can output YES and NO in any case (for example, strings yEs, yes, Yes and YES will be recognized as a positive answer).

Example

Input


11
a
ba
ab
bac
ihfcbadeg
z
aa
ca
acb
xyz
ddcba


Output


YES
YES
YES
YES
YES
NO
NO
NO
NO
NO
NO

Note

The example contains test cases from the main part of the condition.
#include <iostream>                                                
#include <vector>  
#include <algorithm>
#include <string>
#include <set>
#include <vector>
#include <map>
#include <cmath>
#include <numeric>
#include<cctype>
#include<deque>
#include<iomanip>
#include<queue>
#include<cstring>
#include<stack>
#include<unordered_map>
#include<unordered_set>
#include<deque>
#define endl "\n"

#define ll long long

using namespace std;

typedef vector<int> v_c;
typedef vector<v_c>vv_c;

void readint(vector<int>& V) {
	for (int i = 0; i < (int)V.size(); i++) {
		cin >> V[i];
	}
}
void readll(vector<ll>& V) {
	for (int i = 0; i < (int)V.size(); i++) {
		cin >> V[i];
	}
}
ll gcd(ll m, ll n) {

	if (n == 0) {
		return m;
	}
	return gcd(n, m % n);
}
ll lcm(ll m, ll n) {
	return (m / gcd(m, n)) * n;
}
ll fact(ll n) {
	if (n == 0 || n == 1) {
		return 1;

	}
	else return (n * fact(n - 1));
}
ll ncr(ll n, ll r) {
	if (r > n)return 0;
	if (r * 2 > n)r = n - r;
	if (r == 0)return 1;

	ll result = n;
	for (int i = 2; i <= r; i++) {
		result *= (n - i + 1);
		result /= i;
	}
	return result;
}

ll isprime(ll x) {
	for (ll i = 2; i * i <= x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}

void printll(vector<ll>V) {
	for (int i = 0; i < (int)V.size(); i++) {
		cout << V[i] << ' ';

	}
	cout << endl;
}
void printint(vector<int>V) {
	for (int i = 0; i < V.size(); i++) {
		cout << V[i] << ' ';

	}
	cout << endl;
}
long long pow(long long a, long long b, long long m) {
	a %= m;
	long long res = 1;
	while (b > 0) {
		if (b & 1)
			res = res * a % m;
		a = a * a % m;
		b >>= 1;
	}
	return res;
}

int main() {


	

	int t;
	cin >> t;

	while (t--) {
		string s;
		cin>>s;
		char a='a'+s.length()-1;
		int i=0;
		int j=s.length()-1;
		bool flag;
		flag=true;
		while(i<=j){
			char left=s[i];
			char right=s[j];
			if(left!=a&&right!=a){
				flag=false;
				break;
			}
			else if(left==a){
				i++;
				a--;
			}
			else{
				j--;
				a--;
			}
			}
		
		if(!flag){
			cout<<"NO"<<endl;
		}
		else{
			cout<<"YES"<<endl;
		}
	}
	
	return 0;


}