using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Numerics;
public class MainClass
{
	public const long Giri = 1000000007;
	public const long DpInf = 99999999999999;
	
	public static void Main(string[] args)
	{
		var p = Input().ToInt();
		var n = p[0];
		var k = p[1];
		var hash = new HashSet<int>();
		
		for(int i = 0; i < k; i++)
		{
			p = Input().ToInt();
			for(int j = p[0]; j <= p[1]; j++)
			{
				hash.Add(j);
			}
		}
		
		var dp = new long[n+1];
		dp[1] = 1;
		
		for(int i = 1; i < n; i++)
		{
			foreach(var h in hash)
			{
				if(i+h<n+1)
				{
					dp[i+h] += (dp[i] % 998244353);
					dp[i+h] %= 998244353;
				}
			}
			
		}
		
		Console.WriteLine(dp[n]);
		
	}

	
	static long GCD(long a, long b)
	{
		var v = new[] { a, b };
		while (v[1] != 0) { v = new[] { v[1], v[0] % v[1] }; }
		return v[0];
	}
	public static string[] Input() { return Console.ReadLine().Split(); }
}

public static class Smarter
{
	public static int ToInt(this string str) { return int.Parse(str); }
	public static long ToLong(this string str) { return long.Parse(str); }
	public static int[] ToInt(this string[] str, int offset = 0)
	{
		var r = new int[str.Length];
		for(int i = 0; i < str.Length; i++) r[i] = str[i].ToInt() + offset;
		return r;
	}
}
