a:6:{i:0;s:19725:"				<div class="h1"><h1>Darjeeling Gangtok with Pelling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.kunzongtourandtravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.kunzongtourandtravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Darjeeling Gangtok with Pelling Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						10 Nights / 11 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling, Pelling, Lachung, West Sikkim, North Sikkim</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling Gangtok with Pelling Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="75831"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_16/451899/134864.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/451899/134864.jpg"  width="150" height="150"    alt="Darjeeling Gangtok with Pelling Tour" title="Darjeeling Gangtok with Pelling Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Siliguri and Transfer to Darjeeling (105 km approx)
								</p>
								<p class="aj">As you arrive at New Jalpaiguri Railway Station (NJP) / Bagdogra Airport (IXB) / Tenzing Norgay Bus Stand (Junction), our tour representative greets you and helps you with an assisted transfer to Darjeeling, popular as the 'Queen of the Hills'. Located at an altitude of 2123 m above the sea level, it is extremely popular for the Darjeeling Himalayan Railway, fondly called the Toy Train- a UNESCO World Heritage train. The place has been blessed with salubrious weather, scenic beauty, mighty Himalayan peaks and several tourist attractions. Darjeeling is visited by family vacationers as well as honeymooners, every year, in huge numbers<br />
<br />
Upon reaching Darjeeling, complete the check-in formalities at the hotel. Post check-in, you can relax for a while. The evening is free. You can embark on a leisure walk till the Mall Road to enjoy the touristy activities or can opt to indulge in shopping.<br />
<br />
Stay overnight in Darjeeling.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Darjeeling Sightseeing
								</p>
								<p class="aj">Day 2 is going to start quite early. Leave your beds around 3:45 am to enjoy an unforgettable sunrise from the Tiger Hill. Your car takes you to an altitude of 2400 m above the sea level, passing through old Oak forests. As you climb up the Tiger Hill, you can see the sun rising over the Kanchendzonga Peak (Note-subject to clear weather). While returning to the hotel, halt and visit Ghoom Monastery- erected by Lama Sherab Gyatso in 1875, this ancient monastery has the statue of Maitreye Buddha (the future Buddha); War memorial- a memorial constructed in the memory of who sacrificed their lives for their motherland and Batasia Loop- a huge railway loop that offers a mesmerizing 360 degree view of the hill town.<br />
<br />
Later continue to the hotel and relish breakfast. Post breakfast, embark on the second part of sightseeing of Darjeeling including Padmaja Naidu Zoological Park-founded in 1958, this zoo also runs breeding programs for Tibetan wolf, snow leopard and red panda; Himalayan Mountaineering Institute- the oldest mountaineering institute, it also has a museum; The Ropeway- also known as Darjeeling-Rangit Valley Passenger Cable Car, it is the country's oldest passenger ropeway that connects Darjeeling with Singla Bazaar; Tenzing Gumbo Rocks- two rocks lying beside each other, popular amidst rock climbing enthusiasts; Tibetan Refugee Self Help Center- founded in 1959 for Tibetan refugees, the center produces some excellent-quality carpets and woolens etc; any of the lush tea estates, Natural History Museum- Located in the Botanical Garden, this small museum has a display of colorful birds and butterflies of the region, and Japanese Peace Pagoda- this highest free structure of Darjeeling showcases the four forms (avatars) of Lord Buddha.<br />
<br />
Stay overnight</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Darjeeling- Kalimpong (65 km approx) (Sightseeing)
								</p>
								<p class="aj">After breakfast, today you get transferred to Kalimpong, lying at an altitude of 1243 m above the sea level, at the foothills of the Himalayan Mountains. Overlooking Teesta River, Kalimpong is a lovely historical town that boasts of vibrant locals, Buddhist monasteries, lovely views and colonial buildings. On arrival, check-in at the hotel. Later, embark on a sightseeing tour of Kalimpong, including its popular tourist attractions such as Forest Museum- placed near Down Hill, this is place comprising the regions flora and fauna on display; Deolo Hill- the highest point of Kalimpong, this point has a well-maintained park that doubles up as a picnic venue; Hanuman Mandir- located next to Deolo hill, this temple is dedicated to Lord Hanuman and offers superb views; Dr Graham's Homes- formerly known as the St. Andrew's Colonial Homes, this complex was founded in 1900 and consists of offices, church, bakery etc; Durpin Monastery- also known as Zong Dog Palri Fo Brang Gompa, this monastery also houses rare Buddhist manuscripts; Mangal Dham- a beautiful temple in 2 acres, this temple was constructed in the memory of Guruji Shri Mangal Dasji Maharaj and Pineview Nursery- founded in 1971, this nursery has a collection of exotic and rare north, south and central America's cactus plants. In the evening, you can visit the local market of Kalimpong.<br />
<br />
Stay overnight in Kalimpong.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Kalimpong - Pelling (105 km)
								</p>
								<p class="aj">After breakfast in the morning, get transferred to Pelling, lying at an altitude of 2072 m above the sea level. This serene hill town is known for housing stunning historical sites, exciting trekking trails, exotic wildlife and a variety of orchid and rhododendron flowers. The place gets covered with snow during the winter months. The road journey from Kalimpong to Pelling offers memorable views of Mt Kanchenjunga, Mt Pandim, Mt Kabru, Mt Simvo, Mt Jopuno, Mt Khanchendzonga and Mt Siniolchu. On arrival, check into the hotel. The remaining day is for leisure activities. Pelling is ideal for peace and seclusion seekers.<br />
<br />
Overnight stay in Pelling.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Pelling Sightseeing
								</p>
								<p class="aj">On the 5th day of the tour, have your breakfast and get all set for sightseeing in Pelling. The roads of Pelling are lines with lush forests, known for their botanical and zoological richness. Some of the must-visit places here are Rimbi falls- placed near Darap Village, this Waterfall leads to Rimbi River, Rimbi Rock Garden- a well-maintained garden with pathways and pools, ideal for picnics; Khecheopalri Lake - a sacred lake for Hindus and Buddhist lakes, this wish fulfilling lake has crystal clear water, Khecheopalri monastery-located near the Lake, this is a small Buddhist monastery; Kanchenjunga waterfalls- a famous perennial waterfall on a sharp road curve is 28 km away from the town; Pemayangtse Monastery- belonging to Ngingma sect of Tibetan Buddhism, this monastery is one of the oldest monasteries in Sikkim and Rabdantse Palace ruins- built in 1670 by the 2nd Chogyal of Sikkim Tensung Namgyal, the ruins of this palace offer mesmerizing views of the Kanchendzonga ranges.<br />
<br />
Overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Pelling- Gangtok sightseeing (135 km)
								</p>
								<p class="aj">On day 6, have breakfast and begin your ride for Gangtok, the capital city of north eastern state of Sikkim. Lying at an altitude of 1670 m above the sea level, Gangtok is one of the most-visited destinations in north-eastern region of India, which is popular for its monasteries, rich culture, adventure opportunities and natural scenery. Upon reaching, complete the check-in formalities at the hotel.<br />
<br />
Later, get all set for a city tour of Gangtok including Directorate of Handicrafts & Handloom- established in the year 1957, it is the promoter, manufacturer and seller of Sikkim's crafts and handlooms; Namgyal Research Institute of Tibetology- one of the world's most famous institutes on Tibetan language and culture, also housing a museum and a library; Do Drul Chorten- this gigantic white color stupa, which is marked by a golden top; Enchey Monastery- around 200 years old, this monastery was founded in 1909 and belongs to the Nyingma order of Vajrayana Buddhism, White Hall- this 2-storied building in British architecture has historical value, was constructed in 1932 and Flower Show- an exhibition center with Blue Venda Orchids, Celosia, Chrysanthemum, Paps and other flower varieties on display . If time and energy permits, you can enjoy a leisure walk at the M G Road.<br />
<br />
Stay overnight in Gangtok.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Gangtok- Lachung (119 km)
								</p>
								<p class="aj">Post breakfast, you leave for Lachung, lying at an altitude of 8600 feet above the sea level. Enroute, halt at some nice locations such as Tashi Viewpoint- offering a breathtaking view of the snow-clad Kanchenjunga peak, Kabi Longstok- a historical town, Naga Waterfalls- a lovely waterfall that offers a panoramic view of the surrounding snow-clad peaks, the meeting point of Lachen Chu and Lachung Chu in Chungthang, and Bhim Nala Waterfall- another popular waterfall with tranquil surroundings. Stop of lunch on the way and later continue for Lachung. The road journey is going to an unforgeable experience. On arrival, check- in at a hotel. The remaining day is for exploring this lovely hill town that is popular for sparkling waterfalls, nice scenic views, apple orchards and Lachung Monastery.<br />
<br />
Overnight stay at Lachung.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Lachung- Yumthang (sightseeing) - Lachung
								</p>
								<p class="aj">On the 8th day of the tour, have your breakfast and begin driving towards Yumthang, perched at an elevation of 11800 feet above the sea level, for an excursion. En route, halt at the well-known hot spring with water having curative properties for skin diseases. A beautiful valley that is close to Lachung Chu, Yumthang is enclosed by snow-capped peaks. During spring, colorful Rhododendrons, Alpine and Primulae flowers make the valley even more enchanting. A sheet of white snow covers Yumthang in winter season with surrounding mountains, adding to its beauty. Spend half day here. Back to Lachung for lunch, followed by sightseeing including Lachung Monastery- an ancient Nyingma Buddhist monastery, it was founded way back in the year 1880; Cottage Industry and then the Waterfalls with lush and pristine surroundings. In the evening, you can explore the surroundings on your own.<br />
<br />
Dinner and overnight stay at Lachung.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Lachung – Gangtok (125 km)
								</p>
								<p class="aj">After breakfast on the 9th day of the tour, leave for Gangtok in the morning. On the way, halt at Singhik and Mangan – two beautiful towns with lovely views. If the weather is clear, you can enjoy amazing views of various Himalayan peaks such as Mt Kanchenjunga, Mt Pandim, Mt Kabru, Mt Simvo, Mt Jopuno, Mt Khanchendzonga and Mt Siniolchu. Do not forget to click photographs here. After arrival in Gangtok, check into a hotel. The rest of the day is at leisure. Explore the surrounding area on your own. In the evening, you can indulge in shopping at the M G Road.<br />
<br />
Stay overnight in Gangtok.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> Excursion to Tsomgo Lake and Baba Mandir
								</p>
								<p class="aj">Post breakfast. The day is scheduled for an excursion to Tsomgo Lake and Baba Mandir. Also known as Changu Lake, Tsomgo Lake is an oval-shaped lake with a depth of around 50 feet. During most part of the year, it is covered with snow. Lying at a high- altitude of 12400 feet above the sea level, this Lake boasts of enchanting surroundings. The lake is known to have mythological connection with Buddhists. You might also spot several migratory birds like Brahmini ducks. Enjoy yak and mule rides here. On the banks of the Lake is a temple dedicated to Lord Shiva. Thereafter, move to the holy site of Baba Mandir or the shrine of Baba Harbhajan Singh. Next you have an option to visit the very popular Nathula Pass, which is just 20 km from here. This motorable mountain pass is at an altitude of 4310 m above the sea level. The views from here are simply breathtaking. On reaching Gangtok, complete the check-in formalities. You are now free to explore the place on your own. (Note: In the case of landslide or because of any other reason, if Tsomgo Lake is closed, an alternate sightseeing will be offered)<br />
<br />
Overnight stay in Gangtok.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Gangtok – Departure from Siliguri (135 km)
									</p>
									<p class="aj">Today is the last day, after breakfast, get an assisted transfer to Siliguri - New Jalpaiguri Railway Station (NJP) / Bagdogra Airport (IXB) / Tenzing Norgay Bus Stand (Junction) for your onward journey.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.kunzongtourandtravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling Gangtok with Pelling Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="75831"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Darjeeling Gangtok with Pelling Tour - 111 Days Tour Packages";i:2;s:168:"book darjeeling gangtok with pelling tour - 111 days tour packages, valley tour packages, gangtok, darjeeling, pelling, lachung, west sikkim, north sikkim tour packages";i:3;s:215:"Book Darjeeling Gangtok with Pelling Tour - 111 Days tour packages from Kunzong Tours and Travel - Get attractive 111 Days Valley  tour packages for  Gangtok, Darjeeling, Pelling, Lachung, West Sikkim, North Sikkim.";i:4;s:472:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling, Pelling, Lachung, West Sikkim, North Sikkim"        
		                 },
		      "description": "",
		      "name": "Darjeeling Gangtok with Pelling Tour",
		      "telephone": "+91-9593716601"
		    }
		    </script>
			";i:5;N;}