def Max(item):
    if isinstance(item, int) or isinstance(item, float):
        return ceil(item)
    if isinstance(item, str):
        return chr(max(map(ord, item)))
    if isinstance(item, Expression):
        item = item.run()
    if isinstance(item, String):
        item = String(str(item).lower())
    if isinstance(item, str):
        return item.lower()
    if hasattr(item, "__iter__") and item:
        if isinstance(item[0], Expression):
            item = iter_apply(item, lambda o: o.run())
        return max(item)