Undefined behaviour in a small code snippet

Hello,

The program at the bottom prints
1
2
1
2

Does the code contain undefined behaviour in C++17 (note that the structs have common initial sequence )?

Łukasz

#include<iostream>

using namespace std;

struct A {
	int first;
	int second;
};

struct B {
	int first;
	int second;
};

struct Test {
	union {
		A a;
		B b;
	};
};

int main() {
	Test t;
	t.a.first = 1;
	t.b.second = 2;
	cout << t.a.first << '\n';
	cout << t.a.second << '\n';
	cout << t.b.first << '\n';
	cout << t.b.second << '\n';
	return 0;
}