//#include <iostream>
//#include <vector>
//#include <string>
//#include <sstream>
//#include <cstdint>
//#include <algorithm>
///**
//EULER #43
//            0123456789
//The number, 1406357289, is a 0 to 9 pandigital number because it is
//made up of each of the digits 0 to 9 in some order, but it also has 
//a rather interesting sub-string divisibility property.
//
//Let d1 be the 1st digit, d2 be the 2nd digit, and so on. In this way, we note the following:
//
//d2d3d4=406 is divisible by 2
//d3d4d5=063 is divisible by 3
//d4d5d6=635 is divisible by 5
//d5d6d7=357 is divisible by 7
//d6d7d8=572 is divisible by 11
//d7d8d9=728 is divisible by 13
//d8d9d10=289 is divisible by 17
//Find the sum of all 0 to 9 pandigital numbers with this property.
//*/
//
//bool divisable(int num, int b)
//{
//    int a[] = {1,2,3,5,7,11,13,17};
//    return !(num % a[b]);
//}
//
//bool stripInvalid(const std::string& s)
//{
//    if(s[0] == '0' || s[5] != '5' || (s[3] % 2 != 0))
//        return false;
//
//    for(int i = 0; i <= 9; ++i)
//    {
//        if(s.find( i + '0') == std::string::npos)
//        {
//            return false;
//        }
//    }
//    return true;
//}
//
//uint64_t checkNum(const std::string& s)
//{
//    std::stringstream ss;
//    uint64_t t = 0;
//    for(int i = 0; i < 8; ++i)
//    {
//        t = 0;
//        ss.clear();
//        std::string st = s.substr(i, 3);
//        ss << st;
//        ss >> t;
//        if(!divisable(t, i))
//        {
//            return 0;
//        }
//    }
//    ss.clear();
//    ss << s;
//    ss >> t;
//    return t;
//}
//
//bool checkDig(uint64_t t)
//{
//    uint64_t t_ = t;
//    std::vector<int> v;
//    for(int i = 0; i < 8; ++i)
//    {
//        /*v.push_back(t%1000);
//        t/=1000;*/
//        if(!divisable(t_%1000, i))
//        {
//            return false;
//        }
//    }
//    return true;
//
//}
//std::vector<std::string> permute(std::string s)
//{
//    std::string orig = s;
//    std::vector<std::string> v;
//   // v.push_back(s);
//    int len = s.length();
//    int i = len - 4;
//    bool done = false;
//    int digits = 0;
//    
//    while(digits < len)
//    {
//        while(i > 0)//12345
//        {
//            int j = i+1;
//            while(!done)
//            {
//                if(j < len - 1)
//                {
//                    std::swap(s[j], s[j+1]);
//                    v.push_back(s);
//                    ++j;
//                }
//                else
//                    j = i+1;
//                if(s == orig) 
//                    done = true;
//            }
//            std::swap(s[i], s[digits+2]);
//
//           // if(s[1] == orig[len - 1]) i = len - 4;
//           // else 
//                --i;
//
//            orig = s;
//            done = false;
//        }
//       // std::swap(s[0], s[1]);
//        ++digits;
//        i = len - 4;
//    }
//    return v;
//}
//
//int main()
//{   
//    //std::string s = "1406357280";
//    std::vector<int> v;
//    //std::stringstream ss;
//    uint64_t sum = 0,
//        t = 0;
//    /*std::cout << s[3] % 2 << std::endl;
//    ss << s;
//    ss >> t;*/
//    std::vector<std::string> vs = permute("12345");
//    for(int i = 0; i < vs.size(); ++i)//while(s != "4200000000")
//    {        
//        if(stripInvalid(vs[i]))
//        {
//            if((t = checkNum(vs[i])) != 0)
//            {
//                v.push_back(t);
//                std::cout << t << std::endl;
//            }
//           //std::cout<<s<<std::endl;
//        }
//       /* ss << s;
//        ss >> t; 
//        ++t;
//        s = std::to_string(t);*/
//    }
//
//    for(auto& i : v)
//        sum += i;
//    std::cout << "sum= " << sum << std::endl;
//    std::cin>>t;
//}
////int main()
////{
////    uint64_t sum = 0;
////    
////    std::string s = "1430950000";
////    std::vector<int> v;
////    std::stringstream ss;
////    uint64_t t = 0;
////    bool good = true;
////    while(s != "4200000000")
////    {
////        for(int i = 0; i <= 9; ++i)
////        {
////            if(s[0] != '0' || s.find( i + '0') == std::string::npos)
////            {
////                good = false;
////                break;
////            }
////        }
////
////        if(good)
////        {
////       
////           // int arr[8];
////       
////            for(int i = 0; i < 9; ++i)
////            {
////                std::string st = s.substr(i, 3);
////                ss << st;
////                ss >> t;
////                if(t%(i+1) != 0)
////                {
////                    good = false;
////                    break;
////                }
////            }
////
////            if(good)
////            {
////                ss << s;
////                ss >> t;
////                sum += t;
////                std::cout<<s<<std::endl;
////            }
////        }
////        ss << s;
////        ss >> t; 
////        ++t;
////        s = std::to_string(t);
////        good = true;
////       //std::cout<<s<<std::endl;
////    }
////}
#include<iostream>
#include<array>
#include<string>
using namespace std;
 
void print_gene_table2(array< array<string,6>,22 >);  
 
int main()
{
 
// EXCEPTION: too many initializers for ‘std::array<std::array<std::basic_string<char>, 6ul>, 22ul>’
  
  array< array<string,6>,22 > gene_table1 =
  {{// extra brace needed here
    {"UUU","UUC"},                          // Phe
    {"UUA","UUG","CUU","CUC","CUA","CUG"},  // Leu
    {"UCU","UCC","UCA","UCG","AGU","AGC"},  // Ser
    {"UAU","UAC"},                          // Tyr
    {"UAA","UAG","UGA"},                    // STO
    {"UGU","UGC"},                          // Cys
    {"UGG"},                                // Trp
    {"CCU","CCC","CCA","CCG"},              // Pro
    {"CAU","CAC"},                          // His 
    {"CAA","CAG"},                          // Gln
    {"CGU","CGC","CGA","CGG"},              // Arg
    {"AUU","AUC","AUA"},                    // Ile
    {"AUG"},                                // STA or Met
    {"ACU","ACC","ACA","ACG"},              // Thr
    {"AAU","AAC"},                          // Asn
    {"AAA","AAG"},                          // Lys
    {"AGA","AGG"},                          // Arg
    {"GUU","GUC","GUA","GUG"},              // Val
    {"GCU","GCC","GCA","GCG"},              // Ala
    {"GAU","GAC"},                          // Asp
    {"GAA","GAG"},                          // Glu
    {"GGU","GGC","GGA","GGG"}               // Gly
  }};//and here
  
  print_gene_table2(gene_table1);
 
  return 0;
}
 
void print_gene_table2(array< array<string,6>,22 > gene_table1) 
{ 
  for(unsigned i = 0;i < gene_table1.size();i++)//you were mising a condition here
  {//brace here
    for(unsigned j = 0;j < gene_table1[i].size();j++)
    { 
      cout << gene_table1[i][j] << "  ";
    }
    cout<<endl;
  }//and here
}