C# Solution with Union find + Sort
\n public class Solution\n    {\n        private class Unions\n        {\n            private readonly int[] _parents;\n            private readonly int[] _rank
```\n public class Solution\n    {\n        private class Unions\n        {\n            private readonly int[] _parents;\n            private readonly int[] _ranks;\n\n            public Unions(int n)\n            {\n                _parents = new int[n];\n                _ranks = new int[n];\n                for (int i = 0; i < n; i++)\n                {\n                    _parents[i] = i;\n                }\n            }\n\n            public int Find(int x)\n            {\n                if (x != _parents[x])\n                {\n                    x = Find(_parents[x]);\n                }\n                return _parents[x];\n            }\n\n            public bool Union(int x, int y)\n            {\n                int px = Find(x);\n                int py = Find(y);\n                if (px == py)\n                {\n                    return false;\n                }\n                if (_ranks[px] > _ranks[py])\n                {\n                    _parents[py] = px;\n                    _ranks[px]++;\n                }\n                else\n                {\n                    _parents[px] = py;\n                    _ranks[py]++;\n                }\n                return true;\n            }\n        }\n\n\n        public bool[] DistanceLimitedPathsExist(int n, int[][] edgeList, int[][] queries)\n        {\n            bool[] res = new bool[queries.Length];\n            (int idx, int[] q)[] qData = new (int idx, int[] q)[queries.Length];\n\n            for (int i = 0; i < queries.Length; i++)\n            {\n                qData[i] = (i, queries[i]);\n            }\n\n            //sort edges by length\n            Array.Sort(edgeList, (e1, e2) => e1[2].CompareTo(e2[2]));\n            //sort queries by limit\n            Array.Sort(qData, (q1, q2) => q1.q[2].CompareTo(q2.q[2]));\n            Unions dsu = new Unions(n);\n\n            int edIdx = 0;\n\n            for (int i = 0; i < qData.Length; i++)\n            {\n                //add edges accodring to current limit\n                while (edIdx < edgeList.Length && edgeList[edIdx][2] < qData[i].q[2])\n                {\n                    dsu.Union(edgeList[edIdx][0], edgeList[edIdx][1]);\n                    edIdx++;\n                }\n\n                res[qData[i].idx] = (dsu.Find(qData[i].q[0]) == dsu.Find(qData[i].q[1]));\n            }\n\n            return res;\n        }\n    }\n```
['Union Find']