input generation