#include <iostream>
#include <array>
template < typename T>
struct ValueType { using value_type = typename T:: value_type ; } ;
template < template < typename > typename A, typename T>
struct ValueType< A< T>> { using value_type = T; } ;
template < typename T>
using value_type_t = typename ValueType< T> :: value_type ;
template < typename ...> struct Show;
template < typename T>
struct Array { } ;
int main( ) {
Show< value_type_t< Array< int >>> _;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgVmFsdWVUeXBlIHsgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGU7IH07Cgp0ZW1wbGF0ZTx0ZW1wbGF0ZTx0eXBlbmFtZT4gdHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4Kc3RydWN0IFZhbHVlVHlwZTxBPFQ+PiB7IHVzaW5nIHZhbHVlX3R5cGUgPSBUOyB9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgdmFsdWVfdHlwZV90ID0gdHlwZW5hbWUgVmFsdWVUeXBlPFQ+Ojp2YWx1ZV90eXBlOwoKdGVtcGxhdGU8dHlwZW5hbWUuLi4+IHN0cnVjdCBTaG93OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4Kc3RydWN0IEFycmF5IHt9OwoKaW50IG1haW4oKSB7CgkKCVNob3c8dmFsdWVfdHlwZV90PEFycmF5PGludD4+PiBfOwoJCgkKCXJldHVybiAwOwp9