#include <bits/stdc++.h>

using namespace std;

#define endl                '\n'
#define TN                  typename
#define mod                 1000000007LL
#define len(x)              (int) x.size()
#define all(x)              x.begin(), x.end()
#define rall(x)             x.rbegin(), x.rend()
#define mem(x, y)           memset(x, y, sizeof x)
#define FOR(x, l, r)        for (int x = l; x <= r; ++x)
#define ROF(x, l, r)        for (int x = l; x >= r; --x)

#define dbg(...) err(#__VA_ARGS__, __VA_ARGS__);
template<TN Arg1> void err(const char* x, Arg1&& arg1) {
    cerr << x << " = " << arg1 << endl;
}
template<TN Arg1, TN... Args> void err(const char* x, Arg1&& arg1, Args&&... args) {
    cerr.write(x, strchr(x, ',') - x) << " = " << arg1 << ",", err(strchr(x, ',') + 1, args...);
}

template <TN T> inline void Int(T &n) {
    int f = 1, ch = getchar();
    for (n = 0; !isdigit(ch); ch = getchar()) if (ch == '-') f = -1;
    for (; isdigit(ch); ch = getchar()) n = (n << 3) + (n << 1) + ch - '0';
    n = n * f;
}
template <TN T> T gcd(T a, T b) {
    return !b ? a : gcd(b, a % b);
}
template <TN T> inline void umin(T &a, T b) {
    a = a < b ? a : b;
}
template <TN T> inline void umax(T &a, T b) {
    a = a > b ? a : b;
}
template <TN T, TN W> inline void Int(T &x, W &y) {
    Int(x), Int(y);
}
template <TN T, TN W, TN Q> void Int(T &x, W &y, Q &z) {
    Int(x, y), Int(z);
}

const int N = 1e5 + 7;
const int inf = 1e9 + 7;


int solver() {
    int n; cin >> n;
    string s; cin >> s;

    map<char, bool> has;
    has[s[0]] = true;
    for (int i = 1; i < n; ++i) {
        if (s[i - 1] == s[i]) {
            continue;
        }
        if (has.count(s[i])) {
            return cout << "NO" << endl, 0;
        } else {
            has[s[i]] = true;
        }
    }

    cout << "YES" << endl;
    
    return 0;
}

int main() {
    int tt = 1;
    cin >> tt;
    for (int t = 1; t <= tt; ++t) {
        // printf("Case %d: ", ++t);
        solver();
    }
    return 0;
}