#include <cstddef>
#include <iostream>
#include <set>
#include <stdexcept>
std::size_t regions(std::size_t stride) {
    std::set<std::size_t> ids;
    for(std::size_t lane=0;lane<32;++lane) ids.insert(lane*stride*4/128);
    return ids.size();
}
int main() {
    if(regions(1)!=1 || regions(32)!=32 || regions(2)!=2) throw std::runtime_error("address model");
    std::cout<<"contiguous_regions="<<regions(1)<<" strided_regions="<<regions(32)<<'\n';
}
