static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            foreach (var elt in S3.Set)
            {
                WriteLine("{0} :   {1}", S3.Lookup(elt), elt);
            }
            WriteLine();

            S3.ShowOperationTable(); WriteLine();

            foreach (var item in S3.Set)
            {
                WriteLine("{0} inverse: {1}",
                          S3.Lookup(item),
                          S3.Lookup(S3.Inverse(item)));
            }

            WriteLine();

            WriteLine("conjugacy classes (partition of group):");

            WriteLine(S3.Set.Select(a => S3.ConjugacyClass(a).ConvertAll(S3.Lookup)).ToMathSet()); WriteLine();

            foreach (var a in S3.Set)
            {
                WriteLine("conjugacy class of {0,4}: {1}",
                          S3.Lookup(a),
                          S3.ConjugacyClass(a).ConvertAll(S3.Lookup));
            }

            WriteLine();

            foreach (var a in S3.Set)
            {
                WriteLine("centralizer of {0,4}: {1}",
                          S3.Lookup(a),
                          S3.Centralizer(a).ConvertAll(S3.Lookup));
            }

            WriteLine();

            S3.ShowConjugates();

            S3.ShowCentralizers();
        }