expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp expexp exp exp exp exp