#include <bits/stdc++.h>   using namespace std;   const int kN = 100 + 1;   const int kA = 256;   bool dp[kN][kN][kA];   bool used[kN][kN][kA];   vector<pair<int, int> > g[kN];   bool Dp(int u, int v, int mark) {     if (!used[u][v][mark]) {       used[u][v][mark] = true;       dp[u][v][mark] = false;       for (const auto& edge : g[u]) {         if (edge.second < mark) {           continue;         }         dp[u][v][mark] = dp[u][v][mark] || !Dp(v, edge.first, edge.second);       }     }     return dp[u][v][mark];   }   void Solve() {     int n, m;     cin >> n >> m;     for (int i = 0; i < m; ++i) {       int u, v;       char ch;       cin >> u >> v >> ch;       g[u - 1].emplace_back(v - 1, int(ch));     }     for (int u = 0; u < n; ++u) {       for (int v = 0; v < n; ++v) {         cout << (Dp(u, v, 0) ?  A  :  B );       }       cout <<   n ;     }   }   int main() {     std::ios_base::sync_with_stdio(false);     cin.tie(NULL);     int tests_count = 1;     for (int test_index = 0; test_index < tests_count; ++test_index) {       Solve();     }     return 0;   }   