Please solve the programming task below using a self-contained code snippet in a markdown code block.

Given a 2D grid of size m x n and an integer k. You need to shift the grid k times.
In one shift operation:

Element at grid[i][j] moves to grid[i][j + 1].
Element at grid[i][n - 1] moves to grid[i + 1][0].
Element at grid[m - 1][n - 1] moves to grid[0][0].

Return the 2D grid after applying shift operation k times.
 
Please complete the following python code precisely:
```python
class Solution:
    def shiftGrid(self, grid: List[List[int]], k: int) -> List[List[int]]:
```