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.
//      ___            __       ___   ____    ____    
//     /   \          |  |     /   \  \   \  /   /    
//    /  ^  \         |  |    /  ^  \  \   \/   /     
//   /  /_\  \  .--.  |  |   /  /_\  \  \_    _/      
//  /  _____  \ |  `--'  |  /  _____  \   |  |        
// /__/     \__\ \______/  /__/     \__\  |__|        
                                             
//**************************HEADER FILES ******************************************************************//
#include<iostream> 
#include<vector> 
#include<numeric> 
#include<set> 
#include<map> 
#include<climits> 
#include<cmath>
#include<algorithm> 
#include<string> 
#include<stack> 
#include<queue>  
//****************************MACROS**************************************************************************//
#define ll long long int 
#define sz(x) (int)(x.size())
#define ii pair
#define vi vector<int> 
#define vll vector<ll> 
#define pb push_back
#define ppb pop_back 
#define mp make_pair 
#define ff first 
#define ss second 
#define all(x) x.begin(),x.end()
#define alle(x,n) x.begin(),x.begin()+n 
#define sortalla(x) sort(all(x))
#define sortalld(x) sort(all(x),greater<int>())
#define tr(x,i) for(auto i:x)
#define loop(i,n) for (int i = 0; i < n; i++)
#define sloop(i,a,b) for (int i = a; i < b; i++)
#define loopd(i,n) for (int i = n-1; i >= 0; i--)
#define sloopd(i,a,b) for (int i = a; i >= b; i--)
#define deb(x) cout<<#x<<" = "<<x<<endl; 
#define debv1(v){cout<<#v <<" = [ "; for(int i:v){cout<<i<<" ";}cout<<"]"<<endl;}
#define debv2(v) loop(i,v.size()){loop(j,v[i].size()){cout<<v[i][j];}cout<<endl;}cout<<endl; 
#define present(container, element)(container.find(element) != container.end())
#define cpresent(container, element)(find(all(container), element) != container.end()) 
#define sb(s,e) substr(s,e)
#define slen(s) (int)s.length(); 
#define nline "\n"
#define space " "
//********************************************************************************************************//   
using namespace std; 

void init_code(){   
ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#else
// online submission
#endif
}
//*****************************************FUNCTIONS*******************************************************//
int gcd(int a , int b){if(b==0){return a ;} return(gcd(b,a%b));}
void lps(vll & v ){sloop(i,1 ,sz(v))v[i]+=v[i-1];}
void lss(vll & v ){sloopd(i,sz(v)-2,0)v[i]+=v[i+1];}
void ps(vi & v ){sloop(i,1 ,sz(v))v[i]+=v[i-1];}
void ss(vi & v ){sloopd(i,sz(v)-2,0)v[i]+=v[i+1];}
//*********************************************************************************************************//
void solve(){  
string s; cin >> s; 
int n = s.length() ; 
set<char>st; 
int min_idx = -1 ; 
int max_idx = -1 ;
for(int i = 0 ; i<n ; ++ i){
  st.insert(s[i]); 
} 
for(int i = 0 ; i<n ; ++i){
  if(s[i]=='a'){
    min_idx = i ; 
    break ; 
  }
}

for(int i = 0 ; i<n ; ++i){
  if(s[i]==(char)('a' + n -1)){
    max_idx = i ; 
  }
}
bool flag = false; 
for(int i = 0 ; i<n ; ++ i ){
  if(!present(st,'a'+i)){
   flag = true; 
   break ;
  }
}
if(flag or sz(st)!=n){
  cout<<"NO"<<nline; 
  return ; 
}
int start = min_idx ; 
int end = min_idx ; 
char cur_char = 'a'; 
while((end-start)<n and cur_char!=('a'+n-1)){
  if(start>0){
    if(s[start-1]== cur_char + 1){
      start-- ; 
      cur_char++; 
      continue; 
    }
  }
  if(end<n-1){
    if(s[end+1]==cur_char+1){
      end++; 
      cur_char++ ; 
      continue ; 
    }
  }
  cout<<"NO"<<nline; 
  return ; 
}
cout<<"YES"<<nline; 
} 
int main(){
  init_code() ;
  int t = 1; 
  cin>>t; 
  while(t--){
    solve() ; 
  }
 

  return 0 ; 
}


 


 