using static System.Console;
using System.Collections.Generic;
using System.Linq;
class Program
{
static string[] input = {
"a1=a2", "b1=b2", "b3=b2", "c1=c2", "e1=e2", "a3=a4", "c3=c4", "e1=e3",
"a2=a4", "c3=c1", "b3=a4", "c2=d1", "a4=a5", "d2=c1", "b4=b3", "d3=c3"
};
static void Main()
{
var h = new Dictionary<string, int>();
var eq = input
.Select(s => s.Split('=').Select(s => h.ContainsKey(s) ? h[s] : h[s] = h.Count).ToArray())
.ToArray();
var g = Enumerable.Range(1, h.Count).ToArray();
bool changed;
do {
changed = false;
foreach (var e in eq) {
var (i, j) = (e[0], e[1]);
if (g[i] > g[j]) {g[i] = g[j]; changed = true;}
if (g[j] > g[i]) {g[j] = g[i]; changed = true;}
}
} while (changed);
foreach (var t in h.Keys.GroupBy(s => g[h[s]])) WriteLine($"[{string.Join(", ", t)}]");
}
}
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgpjbGFzcyBQcm9ncmFtCnsKICAgIHN0YXRpYyBzdHJpbmdbXSBpbnB1dCA9IHsKICAgICAgICAiYTE9YTIiLCAiYjE9YjIiLCAiYjM9YjIiLCAiYzE9YzIiLCAiZTE9ZTIiLCAiYTM9YTQiLCAiYzM9YzQiLCAiZTE9ZTMiLAogICAgICAgICJhMj1hNCIsICJjMz1jMSIsICJiMz1hNCIsICJjMj1kMSIsICJhND1hNSIsICJkMj1jMSIsICJiND1iMyIsICJkMz1jMyIKICAgIH07CgogICAgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgdmFyIGggPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIGludD4oKTsKICAgICAgICB2YXIgZXEgPSBpbnB1dAogICAgICAgICAgICAuU2VsZWN0KHMgPT4gcy5TcGxpdCgnPScpLlNlbGVjdChzID0+IGguQ29udGFpbnNLZXkocykgPyBoW3NdIDogaFtzXSA9IGguQ291bnQpLlRvQXJyYXkoKSkKICAgICAgICAgICAgLlRvQXJyYXkoKTsKCiAgICAgICAgdmFyIGcgPSBFbnVtZXJhYmxlLlJhbmdlKDEsIGguQ291bnQpLlRvQXJyYXkoKTsKICAgICAgICBib29sIGNoYW5nZWQ7CgogICAgICAgIGRvIHsKICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICBmb3JlYWNoICh2YXIgZSBpbiBlcSkgewogICAgICAgICAgICAgICAgdmFyIChpLCBqKSA9IChlWzBdLCBlWzFdKTsKICAgICAgICAgICAgICAgIGlmIChnW2ldID4gZ1tqXSkge2dbaV0gPSBnW2pdOyBjaGFuZ2VkID0gdHJ1ZTt9CiAgICAgICAgICAgICAgICBpZiAoZ1tqXSA+IGdbaV0pIHtnW2pdID0gZ1tpXTsgY2hhbmdlZCA9IHRydWU7fQogICAgICAgICAgICB9CiAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CgogICAgICAgIGZvcmVhY2ggKHZhciB0IGluIGguS2V5cy5Hcm91cEJ5KHMgPT4gZ1toW3NdXSkpIFdyaXRlTGluZSgkIlt7c3RyaW5nLkpvaW4oIiwgIiwgdCl9XSIpOwogICAgfQp9
[a1, a2, b1, b2, b3, a3, a4, a5, b4]
[c1, c2, c3, c4, d1, d2, d3]
[e1, e2, e3]