three swap methods without temp var