a:6:{i:0;s:12685:"				<div class="h1"><h1>Delightful Uttarakhand Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.holidaycrafters.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.holidaycrafters.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delightful Uttarakhand 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">New Delhi, Nainital, Kausani, Rishikesh, Corbett, Binsar</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.holidaycrafters.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful Uttarakhand 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="123292"/>
						</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/452686/198848.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/452686/198848.jpg"  width="150" height="150"    alt="Delightful Uttarakhand Tour" title="Delightful Uttarakhand 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
								</p>
								<p class="aj">As you reach Delhi, meet our tour representative who helps you with an assisted transfer to Rishikesh. Located on the confluence of River Chandrabhaga and River Ganga, this holy town lies at the foothills of lower Himalayas in Uttarakhand. Rishikesh is also popular for being the base site for journey to the Chardham destinations of Uttarakhand- Kedarnath, Gangotri, Badrinath and Yamunotri. It is visited by a huge number of pilgrims every year as it has several ashrams and temples.<br />
<br />
On arrival, complete the check-in formalities. Evening is scheduled for sightseeing including Laxman Jhula, 450 feet hanging iron Bridge over the mighty Ganges. Next in line is Bharat Mandir, an ancient temple established by Adiguru Shankaracharya. After this continue towards the meeting point of River Ganga, Yumuna and Sarswati, the Triveni Ghat. It is also one of the most revered sacred bathing spots in Rishikesh for seeking salvation. The last visit of the day is to Trayambakeshwar temple, dedicated to Lord Shiva.<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 2:</b> Rishikesh- Lansdowne
								</p>
								<p class="aj">After breakfast on day 2, start your road journey to Lansdowne, a beautiful cantonment town, known for its lush environs and panoramic views. The hill town was developed by the British. It is one of the most peaceful hill stations of India. Lying at an altitude of 1706 m above sea level, Lansdowne has dense oak and pine jungles. As you reach, check-in at the hotel.<br />
<br />
Later on, you may visit the War Museum or the Darwan Singh Sangrahalaya, placed amid the town's central region. The museum is handled by the Indian Army. Next, head to the 'tip n top' hill point for visiting the Anglican, St. Mary's Church. Recently, the Protestants of the town have converted this place into a reading room. Savor wonderful views of Chaukhamba and Trishul mountain ranges from two popular viewpoints in Lansdowne- Tiffin Top and Snow View. Dedicated to Lord Shiva, Tarkeshwar Mahadev is the last attraction of the day. It is placed at a height of 2092 m from the sea level.<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 3:</b> Lansdowne - Jim Corbett National Park
								</p>
								<p class="aj">Today, after breakfast, start your road journey to the very popular Jim Corbett National Park, one of the most popular national park in north India. As you reach, complete the check—in at a jungle resort. Now you can freshen-up, enjoy good food and rest for a while. The evening is at leisure. Explore the nearby area on your own. Visit the Garjiya Devi temple that is located nearby. If you want you can also opt for an evening Jungle safari. This national park is known for its decent population of tigers and elephants. Other animals found here are sambar, slothe bear, various species of deer, langurs etc. It is also known for welcoming as many as 586 species of migratory birds.<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 4:</b> Corbett – Kausani
								</p>
								<p class="aj">On the 4th day, post breakfast, drive to Kausani. Blessed by green surroundings and wonderful scenery, Kausani is known as the 'Switzerland of India'. Kausani is an unspoiled place that is loved by nature lovers and peace seekers. Upon arriving, complete the check-in at the hotel. Take rest for some time. Afterwards, get ready for sightseeing in Kausani including a visit to Kasauni Tea Estate- have a look at the tea varieties and buy some, Sumitranandan Pant Gallery- dedicated to the popular literary figures of modern Hindi literature, Anasakti Ashram- also known as Gandhi Ashram, Lakshmi Ashram- a 70-year old ashram, Rudradhari Falls and Caves. Later, savor dinner.<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 5:</b> Kausani – Binsar
								</p>
								<p class="aj">In the morning, start your road journey for Binsar, famed for its wildlife sanctuary. As you reach Binsar, complete the check-in formalities at the resort. Binsar wildlife sanctuary is loved by wildlife enthusiasts and nature lovers. It has a vast variety of grasses, bushes and trees, along with animals and birds. Back to the resort for lunch. Later on, you can either relax in the room or can explore the place on-foot, on your own. Have your dinner.<br />
<br />
Stay overnight in Binsar.</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> Binsar - Nainital
								</p>
								<p class="aj">Today, on day 6, have breakfast and start driving to Nainital. Positioned in the Himalayan belt of the Kumaon hills, this lovely hill town is an ideal visit for nature lovers. A lovely holiday destination it is a number of placid lakes, surrounded by stunning scenery. Nainital is popular in tourists of all age-groups. On arrival, check into the hotel. Later on, get ready for exploring this beautiful place, starting from Naina Devi Temple, placed on the northern banks of Naini Lake. Next, visit the church of St. John in the Wilderness. Founded way back in the 1844, it lies on the north end of town (Mallital).<br />
<br />
Overnight stay in Nainital.</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> Nainital
								</p>
								<p class="aj">In the morning, today get ready for sightseeing in Nainital. Visit the lovely Naini Lake- the backbone of the city, Governor's House- also known Raj Bhavan. It was constructed in 1899 and is Victorian Gothic domestic structure. The next visit is to the Snow View, which is accessible by a cable car ride. Also called Sher-ka-danda Ridge, it offers breathtaking views of the surroundings. Head towards The Mall road, running along the lake banks, which is now known as Govind Ballabh Pant Marg. This road has several shops and restaurants. If you wish to see touristy activity, this is the place. Spend a memorable evening here.<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 8:</b> Departure
								</p>
								<p class="aj">Today, on the last day of the tour, get transferred to Delhi Airport for boarding flight for your onward journey.</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>
															</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.holidaycrafters.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delightful Uttarakhand 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="123292"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Delightful Uttarakhand Tour - 7 Nights / 8 Days Tour Packages";i:2;s:166:"book delightful uttarakhand tour - 7 nights / 8 days tour packages, hill station tour packages, new delhi, nainital, kausani, rishikesh, corbett, binsar tour packages";i:3;s:199:"Holiday Crafters offers Delightful Uttarakhand Tour - 7 Nights / 8 Days tour package, budget Hill Station tour packages for New Delhi, Nainital, Kausani, Rishikesh, Corbett, Binsar at exciting price.";i:4;s:455:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Nainital, Kausani, Rishikesh, Corbett, Binsar"        
		                 },
		      "description": "",
		      "name": "Delightful Uttarakhand Tour",
		      "telephone": "+91-9679527807"
		    }
		    </script>
			";i:5;N;}