Cs50 won function

check50 keeps timing out on make sure game is winnable 4x4 grid. So I was wondering if there was something wrong with my won function posted below:

bool won(void)
{
    int num=1;
    for (int i=0; i<d; i++) {
        for (int j=0; j<d; j++) {
            if (i==d-1 && j==d-2 && board[i][j]==num) {
                num=0;
            } else if (i==d-1 && j==d-1 && board[i][j]==num) {
                return true;
            } else if (board[i][j]==num) {
               num++;
            } else {
                return false;
            }
        }
    }
return false;
}