def flip_udgs(udgs, flip=1):
    """Flip a 2D array of UDGs (instances of :class:`~skoolkit.graphics.Udg`).

    :param udgs: The array of UDGs.
    :param flip: 1 to flip horizontally, 2 to flip vertically, or 3 to flip
                 horizontally and vertically.
    """
    if flip:
        flipped_udgs = set()
        for row in udgs:
            for udg in row:
                if id(udg) not in flipped_udgs:
                    udg.flip(flip)
                    flipped_udgs.add(id(udg))
        if flip & 1:
            for row in udgs:
                row.reverse()
        if flip & 2:
            udgs.reverse()
