use std::io::stdin;
struct A {
a: u32
}
struct B {
a: A,
b: u32
}
struct C {
b: B,
c: u32
}
trait Print {
fn print(&self);
}
impl Print for A {
fn print(&self) {
println!("{}",self.a)
}
}
impl Print for B {
fn print(&self) {
self.a.print();
println!("{}",self.b)
}
}
impl Print for C {
fn print(&self) {
self.b.print();
println!("{}",self.c)
}
}
fn main() {
let C = C{b:B{a:A{a:1},b:2},c:3};
C.print();
}
dXNlIHN0ZDo6aW86OnN0ZGluOwoKc3RydWN0IEEgewogIGE6IHUzMgkKfQoKc3RydWN0IEIgewogIGE6IEEsCiAgYjogdTMyCn0KCnN0cnVjdCBDIHsKICBiOiBCLAogIGM6IHUzMgp9Cgp0cmFpdCBQcmludCB7CiAgZm4gcHJpbnQoJnNlbGYpOwp9CgppbXBsIFByaW50IGZvciBBIHsKICBmbiBwcmludCgmc2VsZikgewogICAgcHJpbnRsbiEoInt9IixzZWxmLmEpCQogIH0gIAkKfQoKaW1wbCBQcmludCBmb3IgQiB7CiAgZm4gcHJpbnQoJnNlbGYpIHsKICAgIHNlbGYuYS5wcmludCgpOwogICAgcHJpbnRsbiEoInt9IixzZWxmLmIpCQogIH0gIAkKfQoKaW1wbCBQcmludCBmb3IgQyB7CiAgZm4gcHJpbnQoJnNlbGYpIHsKICAgIHNlbGYuYi5wcmludCgpOwogICAgcHJpbnRsbiEoInt9IixzZWxmLmMpCQogIH0gIAkKfQoKZm4gbWFpbigpIHsKICBsZXQgQyA9IEN7YjpCe2E6QXthOjF9LGI6Mn0sYzozfTsKICBDLnByaW50KCk7Cn0K