import java.util.ArrayList;
import java.util.List;

class Rekening {
    private final String nomor;
    private final List<String> mutasi;

    public Rekening(String nomor) {
        this.nomor = nomor;
        this.mutasi = new ArrayList<>();
    }

    // Copy constructor: penyalinan di satu tempat dengan kontrol penuh.
    public Rekening(Rekening lain) {
        this.nomor = lain.nomor;
        this.mutasi = new ArrayList<>(lain.mutasi); // salinan dalam (deep copy)
    }

    public void catat(String transaksi) {
        mutasi.add(transaksi);
    }

    public List<String> mutasi() {
        return mutasi;
    }
}

public class KonstruktorSalin {
    public static void main(String[] args) {
        Rekening asli = new Rekening("123-456");
        asli.catat("setor 500000");

        Rekening salinan = new Rekening(asli);
        salinan.catat("tarik 100000");

        // Mutasi salinan tidak lagi merambat ke asli.
        System.out.println("mutasi asli   : " + asli.mutasi());
        System.out.println("mutasi salinan: " + salinan.mutasi());
    }
}
