a:6:{i:0;s:14844:"				<div class="h1"><h1>Gems of North East India Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.onyourmarkstravel.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.onyourmarkstravel.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Gems of North East India 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok, Darjeeling</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.onyourmarkstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Gems of North East India 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="95150"/>
						</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/465683/161860.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/465683/161860.jpg"  width="150" height="150"    alt="Gems of North East India Tour" title="Gems of North East India 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> Kalimpong
								</p>
								<p class="aj">On your arrival in Jalpaiguri Railway Station (NJP) / Tenzing Norgay Bus Stand (Junction) / Bagdogra Airport (IXB), meet our tour representative who further transfers you to Kalimpong. This is approximately a four-hour-long drive covering a distance of about 85 km. As you reach Kalimpong, Check in at your hotel and relax. In the evening you are free to take a stroll in local markets or nurseries.<br />
<br />
Kalimpong is a prominent floral trader, perched at an elevation of 1250 meters. A massive number of orchids and nurseries surround the town. Nepalese, Lepchas and other ethnic groups and migrants call this town home, together contributing to its rich heritage. The town happens to be a religious center of Buddhism, so you can find many monasteries here.<br />
<br />
Overnight stay in hotel.</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> Kalimpong sightseeing
								</p>
								<p class="aj">Have your breakfast and prepare for Kalimpong sightseeing, which includes Deolo Hill, Hanuman Mandir, Forest Museum (closed on Thursdays), Durpin Monastery, Mangaldham, Pine View Nursery and Dr. Graham Homes. In the evening you are free to take a leisure walk in nurseries of shop in local markets.<br />
<br />
Durpin Monastery or Zand Dog Palri Monastery is an important religious center of the area. It was built in 1972 by Honable Dudjum Rinponche. In Pine View Nursery, vast and rare collection of cactus plants is to be seen. Hanuman Mandir and Mangaldham are revered Hindu shrines dedicated to Lord Hanuman and Lord Krishna, respectively. Lord Hanuman features a 30-ft-high statue of Lord Hanuman, the largest one in North-East India.<br />
<br />
Overnight stay in hotel.</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> Kalimpong- Gangtok (1 ½ hour- 73 km)
								</p>
								<p class="aj">Have your breakfast and check out from your hotel, as you proceed to Gangtok. On reaching Gangtok, check-in at your pre-booked hotel and relax. Later, leave for Gangtok sightseeing; which includes Directorate of Handicrafts & Handloom, Research Institute of Tibetology, Enchey Monastery, Do Drul Chorten (Stupa), White Hall, Flower Show etcetera.<br />
<br />
At Directorate of Handicrafts & Handloom and Research Institute of Tibetology, the visitors broaden their knowledge about Tibetan art, culture and spirituality. With the establishment of Enchey Monastery in 1909, Gangtok came into the limelight as a major pilgrimage spot of Buddhism. Legends that here the spirits of Yabdean, Khangchendzonga and Mah?k?la Guru Padmasambhava reside here and were subdued by Guru Padmasambhava. Do-Drul Chorten is a stupa dating back to 1945; it was built by Trulshik Rinpoche. The complex features Chorten Lakahang and Guru Lakhang, where you can spot statues of Guru Rinpoche.<br />
<br />
Return to your hotel for 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 4:</b> Gangtok- Baba Mandir and Tsomgo Lake- Gangtok (approximately 1 hour- 38 km, one side)
								</p>
								<p class="aj">In the morning, have your breakfast and proceed for an excursion to Baba Mandir and Tsomgo Lake. On returning Gangtok, you are free to take a stroll in MG Road or local markets.<br />
<br />
Baba Harbhajan Singh Mandir is a different kind of temple, dedicated to an Indian Army soldier. It is believed that he had spiritual powers. He used to warn the team three days prior surprise attack by the enemies. Hero of Nathula or Baba Harbhajan Singh sacrificed his life in 1967, near the shrine.<br />
<br />
Tsomgo Lake is an emerald glacial lake situated at an altitude of 3780 meters. This is a treasury for trekkers and nature-lovers; surrounded by titan hills and purest form of nature. Red Panda, Brahminy ducks and other such adorable animals and birds call the vicinity their home. During May and August, a mélange of flowers like yellow poppies and rhododendrons get strewn all around. Don’t forget to offer prayers in the Lord Shiva Temple on the lakeside.<br />
<br />
Return to Gangtok. Overnight stay in hotel.<br />
<br />
(Please note: In case the lake area is closed due to landslides or other reasons, alternative sightseeing session is to be provided).</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> Gangtok- Darjeeling (2 ½ hours- 97 km)
								</p>
								<p class="aj">Have your breakfast and get ready to visit Darjeeling. On Reaching, check-in at your hotel and relax. In the evening, you are free to wander through Mall Road or other local markets of the area.<br />
<br />
Darjeeling, the town of tea gardens, is settled at an altitude of 7100 feet. Its tea is internationally extolled for its taste. The locale is draped with manicured tea gardens, sprinkling enlivening aroma in the aura. Darjeeling Himalayan Railway is yet another asset of the town, something that makes the town stand out. This railway line has been recognized as a World Heritage Site by UNESCO. It meanders through the green carpet of the hills offering an enchanting experience to its passengers. The British made it their summer capital during their raj in India. They generously dotted the town with their signature-styled buildings.<br />
<br />
Overnight stay in hotel.</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> Darjeeling
								</p>
								<p class="aj">By 3:45 you leave for Tiger Hill. Your trip to Darjeeling is hollow if sunset view of Tiger Hill is not involved. At an elevation of 8000 feet, it is easier to spot the peaks changing color as sun changes it position and gradually starts to set. The sunrays first hit two of most popular and highest peaks of the world; Mount Everest and Kanchenjunga Peak. This moment is rush-free and de-stressing.<br />
<br />
Afterwards, on your way back to the hotel, stopover at Ghoom Monastery, Batasia Loop and Peace Memorial. Ghoom Monastery was founded by Lama Sherab Gyatso in 1875. The statue of Maitreya Budhha, which is 15 feet tall, is a crowd-pleaser. Batasia Loop is yet another place where you can unwind and can pay homage in Peace Memorial. Return to the room and have your breakfast.<br />
<br />
Later, get ready for the second round of Darjeeling sightseeing, which includes Padamaja Naidu Zoological Park, Tibetan Refugee Self Help Center (Closed on Sunday), Himalayan Mountaineering Institute (Closed on Thursday), Ropeway, Tea Estate, Tensing Gumbo Rock, Natural History Museum (Sunday Closed) and Peace Pagoda.<br />
<br />
A lavish exposition of Tibetan ethnicity is viewed in Tibetan Refugee Self Help Center through its artifacts, handlooms, clothing and other such beautiful things. Natural History Museum houses a collection and specimens of reptiles, fishes, insects, birds, mammals and others. In Padmaja Naidu Zoology Park is where you can catch the sight of leopards, red pandas, Tibetan wolf and other endangered species of animals. Peace Pagoda is a symbol of peace and spirituality and dates back to 1992. The foundation of this stunning white pagoda was laid by Nichidatsu Fujii.<br />
<br />
Overnight stay in hotel.</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> Darjeeling- Mirik- Darjeeling (1 ½ hours- 62 km, one side
								</p>
								<p class="aj">Have your breakfast and prepare for an excursion to Mirik. This hill-station is perched at an elevation of 1495 meters. Visitors often don’t miss a boat-ride in Sumendu Lake, which is encircled with pine trees and manicured gardens. Other than boating, you may also indulge in horse-riding. Mirik is also noted for orange orchids, tea gardens, cardamom groves and gardens, where you are free to take a leisure nature walk and spend some time.<br />
<br />
On your way back to Darjeeling, indulge in a shopping experience in Pashupati Market. The market is renowned for cheap foreign goods. In the evening, you are free to explore local markets or Mall Road.<br />
<br />
Overnight stay in hotel.</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> Darjeeling- Bagdogra Airport (IXB) / New Jalpaiguri Railway Station (NJP) / Tenzing Norgay Bus Stand
								</p>
								<p class="aj">After breakfast, check out from the hotel and prepare for your onward journey. You get an assisted transfer to Bagdogra Airport (IXB) / New Jalpaiguri Railway Station (NJP) / Tenzing Norgay Bus Stand (Junction).</p>
								</td>
								</tr>
								</table>					
								</div>						<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>
																		<li>Transfers</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.onyourmarkstravel.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Gems of North East India 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="95150"/>
						</form>
						</div>
						
						";i:1;s:68:"Book Gems of North East India Tour - 7 Nights / 8 Days Tour Packages";i:2;s:125:"book gems of north east india tour - 7 nights / 8 days tour packages, valley tour packages, gangtok, darjeeling tour packages";i:3;s:159:"OnyourmarksTravel offers Gems of North East India Tour - 7 Nights / 8 Days tour package, budget Valley tour packages for Gangtok, Darjeeling at exciting price.";i:4;s:420:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok, Darjeeling"        
		                 },
		      "description": "",
		      "name": "Gems of North East India Tour",
		      "telephone": "+91-8334014211"
		    }
		    </script>
			";i:5;N;}