#include <bits/stdc++.h>
using namespace std;
#define ii pair <int, int>
#define X first
#define Y second
const int maxn = 5e5 + 5;
int n, m, ans = 0, vis[maxn];
stack <int> q;
vector <ii> adj[maxn];
vector <int> gr[maxn];
void dfs (int u) {
for (auto v : gr[u]) {
if (vis[v]) continue;
vis[v] = 3 - vis[u];
dfs (v);
}
}
signed main () {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1, u, v, w; i <= m; i++) {
cin >> u >> v >> w;
adj[u].push_back ({v, w});
adj[v].push_back ({u, w});
}
for (int i = 1; i <= n; i++) {
sort (adj[i].begin(), adj[i].end(), [&] (ii x, ii y) {
return x.Y < y.Y;
});
gr[i].push_back (adj[i].begin()->X);
gr[adj[i].begin()->X].push_back (i);
ans = max (ans, adj[i].begin()->Y);
}
for (int i = 1; i <= n; i++) {
if (vis[i]) continue;
vis[i] = 1;
dfs (i);
}
cout << ans << '\n';
for (int i = 1; i <= n; i++) {
if (vis[i] == 1) cout << 'B';
else cout << 'D';
}
}
// qmdzvcl