input-output programs