function initSmallNumbers()
    local dx = math.floor((cell.width - 2 * cell.mx) / 3) + 2
    local dy = math.floor((cell.width - 2 * cell.my) / 3)
    for x = 1, 9 do
        smallNumbers[x] = {}
        smallNumbersVal[x] = {}
        for y = 1, 9 do
            smallNumbers[x][y] = {}
            smallNumbersVal[x][y] = {}
            local x1 = grid.x1 + (x - 1) * cell.width
            local y1 = grid.y1 + (y - 1) * cell.height
            local n = 1
            for j = 1, 3 do
                for i = 1, 3 do
                    local x2 = x1 + cell.mx + (i-1) * dx
                    local y2 = y1 + cell.my + (j-1) * dy
                    smallNumbers[x][y][n] = {x=x2, y=y2}
                    smallNumbersVal[x][y][n] = false
                    n = n + 1
                end
            end
        end
    end
    smallNumbersVal[8][5][4] = true
end

function initGrid()
    grid.x2 = grid.x1 + 9 * cell.width
    grid.y2 = grid.y1 + 9 * cell.height
    for i = 1, 9 do
        grid[i] = {}
        for j = 1, 9 do
            local x = grid.x1 + (i - 1) * cell.width
            local y = grid.y1 + (j - 1) * cell.height
            grid[i][j] = {x1=x, y1=y, x2=x+cell.width, y2=y+cell.height}
        end
    end
    local n = 0
    local m = 0
    grid.vline = {}
    for x = grid.x1, grid.x1 + 9 * cell.width, cell.width do
        n = n + 1
        if n % 3 ~= 1 then
            m = m + 1
            grid.vline[m] = {x1=x, y1=grid.y1, x2=x, y2=grid.y1+9*cell.height}
        end
    end
    n = 0
    m = 0
    grid.hline = {}
    for y = grid.y1, grid.y1 + 9 * cell.height, cell.height do
        n = n + 1
        if n % 3 ~= 1 then
            m = m + 1
            grid.hline[m] = {x1=grid.x1, y1=y, x2=grid.x1+9*cell.width, y2=y}
        end
    end
    n = 0
    grid.vbline = {}
    for x = grid.x1, grid.x1+9 * cell.width, cell.width * 3 do
        n = n + 1
        grid.vbline[n] = {x1=x, y1=grid.y1, x2=x, y2=grid.y1+9*cell.height}
    end
    n = 0
    grid.hbline = {}
    for y = grid.y1, grid.y1+9*cell.height, cell.height * 3 do
        n = n + 1
        grid.hbline[n] = {x1=grid.x1, y1=y, x2=grid.x1+9*cell.width, y2=y}
    end
end