#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
struct S {};
S a[128];
S* ap = a;
std::vector<S*> v(sizeof(a)/sizeof(a[0]));
std::generate_n(std::begin(v), v.size(), [&]() { return ap++; });
for (size_t i = 0; i < v.size(); i++)
{
if (&a[i] != v[i]) // Ensure same address at each element.
{
std::cerr << "Error\n";
break;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+CgppbnQgbWFpbigpCnsKICAgIHN0cnVjdCBTIHt9OwogICAgUyBhWzEyOF07CiAgICBTKiBhcCA9IGE7CgogICAgc3RkOjp2ZWN0b3I8Uyo+IHYoc2l6ZW9mKGEpL3NpemVvZihhWzBdKSk7CiAgICBzdGQ6OmdlbmVyYXRlX24oc3RkOjpiZWdpbih2KSwgdi5zaXplKCksIFsmXSgpIHsgcmV0dXJuIGFwKys7IH0pOwoKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykKICAgIHsKICAgICAgICBpZiAoJmFbaV0gIT0gdltpXSkgLy8gRW5zdXJlIHNhbWUgYWRkcmVzcyBhdCBlYWNoIGVsZW1lbnQuCiAgICAgICAgewogICAgICAgICAgICBzdGQ6OmNlcnIgPDwgIkVycm9yXG4iOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=