import Data.Char
import System.IO
isUnreserved c =
c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9'
|| c `elem` "-_.~"
urlencode [] = []
urlencode (' ':tail) = '+' : urlencode tail
urlencode (c:tail)
| isUnreserved c = c : urlencode tail
| otherwise = '%' : intToDigit d1 : intToDigit d2 : urlencode tail where (d1, d2) = ord c `divMod` 16
main = hSetBinaryMode stdin True >> interact urlencode