#include <iostream>
#include <string>
#include<vector>

template<int N, typename T>
class Array {
    T m_Array[N];
public:
    int getSize() const { return N; }
    T operator[](int i) {
        return m_Array[i];
    }
    void setValue(int i, T x) {
        m_Array[i] = x;
    }
};

int main() {
    Array<7, int> a7;
    for(int i = 0; i < 7; ++i)
        a7.setValue(i, i*i);
    for(int i = 0; i < 7; ++i)
        std::cout << a7[i] << std::endl;
    Array<7, std::string> aStr7;
    std::vector<std::string> days{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    for(int i = 0; i < 7; ++i)
        aStr7.setValue(i,days[i]);
    for(int i = 0; i < 7; ++i)
        std::cout << aStr7[i] << std::endl;

}
