#include <msl_int_limits>
#include <cstddef>

namespace std {
    template<size_t N>
    class __bitset_base {
    public:
        __bitset_base();
        __bitset_base(unsigned long);

        __bitset_base& set(size_t, bool);
        __bitset_base& reset(size_t);
        bool test(size_t) const;

    private:
        static const size_t num_bits_word = __char<>::bits * sizeof(unsigned long);
        static const size_t nwords_ = N;

        unsigned long data_[N];
    };

    template<size_t N>
    class bitset : private __bitset_base<N == 0 ? 1 : (N - 1) / (__char<>::bits * sizeof(unsigned long) + 1) {
        typedef __bitset_base<N == 0 ? 1 : (N - 1) / (__char<>::bits * sizeof(unsigned long)) + 1> base;


    }
};