input perfect