description: A string is called square if it is some string written twice in a row. For example, the strings "aa", "abcabc", "abab" and "baabaa" are square. But the strings "aaa", "abaaab" and "abcdabc" are not square.
  
  For a given string s determine if it is square.
  
  Input
  
  The first line of input data contains an integer t (1 ≤ t ≤ 100) —the number of test cases.
  
  This is followed by t lines, each containing a description of one test case. The given strings consist only of lowercase Latin letters and have lengths between 1 and 100 inclusive.
  
  Output
  
  For each test case, output on a separate line:
  
    * YES if the string in the corresponding test case is square, 
    * 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 response).
  
  Example
  
  Input
  
  
  10
  a
  aa
  aaa
  aaaa
  abab
  abcabc
  abacaba
  xxyy
  xyyx
  xyxy
  
  
  Output
  
  
  NO
  YES
  NO
  YES
  YES
  YES
  NO
  NO
  NO
  YES
solution: //package com.codeforces.Round762;
  
  import java.io.*;
  
  public class Problem01 {
  
  
      public static void main(String[] args)throws IOException {
         Reader scan=new Reader();
          BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
          int t=scan.nextInt();
          while (t-->0) {
              String s= scan.next();
              if(s.length()%2==1){
                  bw.write("NO");
              }
              else {
                  int half=s.length()/2;
                  String s1=s.substring(0,half);
                  String s2=s.substring(half,s.length());
                  if(s1.equals(s2)){
                      bw.write("YES");
                  }
                  else {
                      bw.write("NO");
                  }
              }
              bw.newLine();
              bw.flush();
          }
          bw.flush();
      }
  
      //FAST READER
      static class Reader {
          public int BS = 1<<16;
          public char NC = (char)0;
          byte[] buf = new byte[BS];
          int bId = 0, size = 0;
          char c = NC;
          double num = 1;
          BufferedInputStream in;
  
          public Reader() {
              in = new BufferedInputStream(System.in, BS);
          }
  
          public Reader(String s) throws FileNotFoundException {
              in = new BufferedInputStream(new FileInputStream(new File(s)), BS);
          }
  
          public char nextChar(){
              while(bId==size) {
                  try {
                      size = in.read(buf);
                  }catch(Exception e) {
                      return NC;
                  }
                  if(size==-1)return NC;
                  bId=0;
              }
              return (char)buf[bId++];
          }
  
          public int nextInt() {
              return (int)nextLong();
          }
  
          public long nextLong() {
              num=1;
              boolean neg = false;
              if(c==NC)c=nextChar();
              for(;(c<'0' || c>'9'); c = nextChar()) {
                  if(c=='-')neg=true;
              }
              long res = 0;
              for(; c>='0' && c <='9'; c=nextChar()) {
                  res = (res<<3)+(res<<1)+c-'0';
                  num*=10;
              }
              return neg?-res:res;
          }
  
          public double nextDouble() {
              double cur = nextLong();
              return c!='.' ? cur:cur+(cur < 0 ? -1*nextLong()/num : nextLong()/num);
          }
  
          public String next() {
              StringBuilder res = new StringBuilder();
              while(c<=32)c=nextChar();
              while(c>32) {
                  res.append(c);
                  c=nextChar();
              }
              return res.toString();
          }
      }
  }
  