contract D {
    uint x;
    modifier purem(uint) { _; }
    modifier viewm(uint) { uint a = x; _; a; }
    modifier nonpayablem(uint) { x = 2; _; }
}
contract C is D {
    function f() purem(0) pure public {}
    function g() viewm(0) view public {}
    function h() nonpayablem(0) public {}
    function i() purem(x) view public {}
    function j() viewm(x) view public {}
    function k() nonpayablem(x) public {}
    function l() purem(x = 2) public {}
    function m() viewm(x = 2) public {}
    function n() nonpayablem(x = 2) public {}
}
// ----
