#include <iostream>
//#pragma pack(1)
struct S{
  int32_t i32;
  int8_t i8;
  int32_t i32_2;
  int16_t i16;
};

using namespace std;

int main (){
	S s;
	uint32_t addr=(uint32_t)&s;
	cout<<addr<<endl;
	uint32_t addr0=(uint32_t)&s.i32;
	uint32_t addr1=(uint32_t)&s.i8;
	uint32_t addr2=(uint32_t)&s.i32_2;
	uint32_t addr3=(uint32_t)&s.i16;
	cout<<addr<<" "<<(addr0-addr)<<" "<<(addr1-addr)<<" "<<(addr2-addr)<<" "<<(addr3-addr)<<endl;
	return 0;
}