#include <bits/stdc++.h>
using namespace std;
int sc(int &x) { return scanf("%d", &x); }
int sc(unsigned int &x) { return scanf("%u", &x); }
int sc(long long &x) { return scanf("%lld", &x); }
int sc(unsigned long long &x) { return scanf("%llu", &x); }
int sc(double &x) { return scanf("%lf", &x); }
int sc(long double &x) { return scanf("%Lf", &x); }
int sc(char *x) { return scanf("%s", x); }
int sc(char &x) { return scanf("%c", &x); }
template <typename T, typename... Args>
void sc(T &v, Args &...args) {
  sc(v);
  sc(args...);
}
void pr(const int &x) { printf("%d", x); }
void pr(const unsigned int &x) { printf("%u", x); }
void pr(const long long &x) { printf("%lld", x); }
void pr(const unsigned long long &x) { printf("%llu", x); }
void pr(const double &x) { printf("%.10lf", x); }
void pr(const long double &x) { printf("%.10Lf", x); }
void pr(const char *const &x) { printf("%s", x); }
void pr(char *const &x) { printf("%s", x); }
void pr(const char &x) { printf("%c", x); }
template <typename T, typename... Args>
void pr(T const &v, Args const &...args) {
  pr(v);
  pr(' ');
  pr(args...);
}
const long long MOD = 1e9 + 7;
inline void _add(long long &a, long long b) { a = (a + b) % MOD; }
inline void _sub(long long &a, long long b) { a = (a + MOD - b) % MOD; }
inline void _mul(long long &a, long long b) { a = (long long)a * b % MOD; }
inline long long _Add(long long a, long long b) { return (a + b) % MOD; }
inline long long _Sub(long long a, long long b) { return (a + MOD - b) % MOD; }
inline long long _Mul(long long a, long long b) { return a * b % MOD; }
char s[310];
char a[310][310];
int main() {
  int t;
  sc(t);
  int n;
  while (t--) {
    sc(n, s);
    if (n == 2 && s[0] >= s[1]) {
      pr("NO");
      pr("\n");
    } else {
      pr("YES");
      pr("\n");
      pr("2");
      pr("\n");
      pr(s[0], s + 1);
      pr("\n");
    }
  }
  return 0;
}
