Dart Solution
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    int maximumOr(List<int> nums, int k) {\n        final size = nums.length;\n\n        final List<int> prefixOr = List.filled(size, 0);\n        final List<int> suffixOr = List.filled(size, 0);\n\n        for (int i = 1; i < size; i++) {\n            prefixOr[i] = prefixOr[i - 1] | nums[i - 1];\n        }\n\n        for (int i = size - 2; i >= 0; i--) {\n            suffixOr[i] = suffixOr[i + 1] | nums[i + 1];\n        }\n\n        var maxi = 0;\n        for (int i = 0; i < size; i++) {\n            nums[i] <<= k;\n            maxi = max(maxi, prefixOr[i] | nums[i] | suffixOr[i]);\n        }\n\n        return maxi;\n    }\n}\n\n```
['Array', 'Bit Manipulation', 'Prefix Sum', 'Dart']